if (typeof ButtonWidget == "undefined") {var ButtonWidget = BaseWidget.extend({create: function(widget, settings) { var jQ = this.base(widget, settings); var s = jQ.widgetState(); var fn = s.clickFunction; if (fn) { jQ.widgetData({ clickFunction: eval("(function(){ var f=" + fn + "; return f;})()") }); delete s.clickFunction; }jQ.click(function() { if (this.enabled()) { var f = $(this).widgetData().clickFunction; if (f) { f(); } } }) .mousedown(function() { if (this.enabled()) { $(this).parent(".Button").addClass("mousedown"); if ($(this).parent(".Button").hasClass("mouseover")) { this.mOver = true; $(this).parent(".Button").removeClass("mouseover"); } } }) .mouseup(function() { $(this).parent(".Button").removeClass("mousedown"); if (this.mOver) { this.mOver = false; $(this).parent(".Button").addClass("mouseover"); } });jQ.widgetElement().enabled = function(state) { if (state != null) { if (state) { ButtonWidget.enable($(this)); } else { ButtonWidget.disable($(this)); }return true; } else { return ButtonWidget.isEnabled($(this)); } };jQ.widgetElement().selected = function(state) { if (state != null) { if (state) { ButtonWidget.select($(this)); } else { ButtonWidget.unselect($(this)); }return true; } else { return ButtonWidget.isSelected($(this)); } };return jQ; },isEnabled: function(selector) { return !$(selector).parent(".ButtonWidget").is(".disabled"); },enable: function(selector) { $(selector).parent(".Button").removeClass("disabled"); },disable: function(selector) { $(selector).parent(".Button").addClass("disabled"); },isSelected: function(selector) { return $(selector).parent(".Button").is(".selected"); },select: function(selector) { $(selector).parent(".Button").addClass("selected"); },unselect: function(selector) { $(selector).parent(".Button").removeClass("selected"); } }); }$(document).ready(function() { $(".common-button").each(function() { if (!$(this).get(0).hoverState) { $(this).hover( function() { if (!$(this).parent(".Button.widget-root").is(".disabled")) { $(this).parent(".Button.widget-root").addClass("mouseover"); } }, function() { $(this).parent(".Button.widget-root").removeClass("mouseover"); } ).get(0).hoverState = true; } }); }); ;if (typeof ScrollerWidget == "undefined") {var ScrollerWidget = BaseWidget.extend({create: function(selector, settings) { var jQ = this.base(selector, settings); var s = jQ.widgetState(); delete s.parts;var d = jQ.widgetData(); if (s.beforeScroll) { var fn = "var v = " + s.beforeScroll + "; return v(selector,cb);"; d.beforeScroll = new Function("selector,cb", fn); delete s.beforeScroll; }if (s.afterScroll) { var fn = "var v = " + s.afterScroll + "; return v(selector);"; d.afterScroll = new Function("selector", fn); delete s.afterScroll; } var self = this; jQ.hover(function() { var p = self.findParts(jQ); if (p.bodyMax > p.areaMax) { $(".mouseState", this).addClass("mouseoverscroller"); } }, function() { $(".mouseState", this).removeClass("mouseoverscroller"); }); if(ScrollerWidget.initInterval) { clearTimeout(ScrollerWidget.initInterval); } ScrollerWidget.initInterval = setTimeout(function() { self.checkInitialButtonStates(); }, 50); d.finishCallback = function() { arguments.callee.thisObj.finishScroll(arguments.callee.selector); }; d.finishCallback.thisObj = this; d.finishCallback.selector = selector;return jQ; },findParts: function(selector) { var jQ = $(selector); var s = jQ.widgetState();if (s.parts == null) { s.parts = {}; s.parts.area = $("div.area", jQ); s.parts.body = $("div.area table.body", jQ); s.parts.areaMax = s.direction == "horizontal" ? s.parts.area.width() : s.parts.area.height(); s.parts.bodyMax = s.direction == "horizontal" ? s.parts.body.width() : s.parts.body.height(); s.parts.prevButton = jQ.widgetChild(".scroller-layout .button-previous"); s.parts.nextButton = jQ.widgetChild(".scroller-layout .button-next"); }return s.parts; },calcScroll: function(selector, position, animate) { var jQ = $(selector); var s = jQ.widgetState(); var parts = this.findParts(selector); var pixelPos = Number(position);if (typeof position == "string") { if (position.indexOf("%") == position.length - 1) { pixelPos = Math.floor(parts.bodyMax * (Number(position.substring(0, position.length - 1)) / 100)); } else if (position.indexOf("px") == position.length - 2) { pixelPos = Number(position.substring(0, position.length - 2)); } else { throw new Error("You passed an invalid position value to Scroller.scrollTo for object " + jQ.attr("id")); } } var start = (s.direction == "horizontal" ?  parts.area.scrollLeft() : parts.area.scrollTop()); var delta = pixelPos - start; var max = (delta <= 0 ? 0 : parts.areaMax); var maxMove = (delta <= 0 ? 0 : parts.bodyMax - parts.areaMax); if(start >= 0 && start <= parts.bodyMax) { if (delta < 0 && start + delta < 0) { delta = -start; } else if (delta > 0 && start + delta > maxMove) { delta = maxMove - start; } var hitStop = (delta > 0 ? (start + delta >= maxMove) : (start + delta <= 0)); if (hitStop && delta <= 0) { parts.prevButton.widgetElement().enabled(false); s.prevStop = true; } else if (hitStop && delta >= 0) { parts.nextButton.widgetElement().enabled(false); s.nextStop = true; }if (delta < 0) { parts.nextButton.widgetElement().enabled(true); s.nextStop = false; } else if (delta > 0) { parts.prevButton.widgetElement().enabled(true); s.prevStop = false; } return (hitStop ? maxMove : start + delta); }return 0; },scrollTo: function(selector, position, animate) { var jQ = $(selector); if (jQ[0].inmotion) { return; }var s = jQ.widgetState(); var parts = this.findParts(selector); var start = (s.direction == "horizontal" ? parts.area.scrollLeft() : parts.area.scrollTop()); var scrollPos = this.calcScroll(selector, position, animate); if (start == scrollPos) { return; } var d = jQ.widgetData(); if (d.beforeScroll) { var cb = function() { arguments.callee.thisObj.startScroll(arguments.callee.selector, arguments.callee.scrollPos, arguments.callee.animate); }; cb.thisObj = this; cb.selector = selector; cb.scrollPos = scrollPos; cb.animate = animate; d.beforeScroll(selector, cb); } else { this.startScroll(selector, scrollPos, animate); } },startScroll: function(selector, scrollPos, animate) { var jQ = $(selector); if (jQ[0].inmotion) { return; }var s = jQ.widgetState(); var d = jQ.widgetData(); var parts = this.findParts(selector); var start = (s.direction == "horizontal" ? parts.area.scrollLeft() : parts.area.scrollTop());var anim="scroll"; anim += (s.direction == "horizontal" ? "Left" : "Top");var hitStop = this.isAtStop(jQ); jQ.widgetTrigger("scrollstart", [scrollPos, hitStop]); var eventName = scrollPos < start ? "scrollprevious" : "scrollnext"; jQ.widgetTrigger(eventName, [scrollPos, hitStop]); $(".mouseState", jQ).addClass(eventName); if (s.scrollEvent && s.scrollEvent != eventName) { $(".mouseState", jQ).removeClass(s.scrollEvent); } s.scrollEvent = eventName; $(".area .overlay", jQ).css("display", "block");jQ[0].inmotion = true; if (animate) { var parms = {}; var self = this; parms[anim] = scrollPos; parts.area.animate(parms, s.scrollSpeed, null, function() { self.finishScroll(selector); }); } else { var self = this; parts.area[0][anim] = scrollPos; jQ[0].inmotion = false; if (s.finishTimer) { window.clearTimeout(s.finishTimer); }s.finishTimer = window.setTimeout(d.finishCallback, 250); } },finishScroll: function(selector) { var jQ = $(selector); var s = jQ.widgetState(); var parts = this.findParts(selector);s.finishTimer = null; jQ[0].inmotion = false; $(".area .overlay", jQ).css("display", "none"); var scroll = (s.direction == "horizontal" ? parts.area.scrollLeft() : parts.area.scrollTop()); var page = Number(Number(scroll / s.scrollAmount).toFixed(1)); jQ.widgetTrigger("scrollend", [page]); if (s.scrollEvent) { $(".mouseState", jQ).removeClass(s.scrollEvent); delete s.scrollEvent; } var d = jQ.widgetData(); if (d.afterScroll) { d.afterScroll(selector); } },isInMotion: function(selector) { return $(selector)[0].inmotion; },scrollNext: function(selector) { var jQ = $(selector); var s = jQ.widgetState(); var parts = this.findParts(jQ); var amt = (s.direction == "horizontal" ? parts.area.scrollLeft() + s.scrollAmount : parts.area.scrollTop() + s.scrollAmount); this.scrollTo(selector, amt, s.animateScroll); },scrollPrevious: function(selector) { var jQ = $(selector); var s = jQ.widgetState(); var parts = this.findParts(jQ); var amt = (s.direction == "horizontal" ? parts.area.scrollLeft() - s.scrollAmount : parts.area.scrollTop() - s.scrollAmount); this.scrollTo(selector, amt, s.animateScroll); },scrollToPage: function(selector, pageNumber, animate) { var jQ = $(selector); var s = jQ.widgetState(); var pos = pageNumber * parseInt(s.scrollAmount); this.scrollTo(selector, pos, animate); },isAtStop: function(selector) { var s = $(selector).widgetState(); return (s.nextStop || s.prevStop); },isPrevStop: function(selector) { var s = $(selector).widgetState(); return s.prevStop; },isNextStop: function(selector) { var s = $(selector).widgetState(); return s.nextStop; },checkInitialButtonStates: function() { $(".Scroller").each(function() { var jQ = $(this); var s = jQ.widgetState(); s.prevStop = true; s.nextStop = true;var jq = jQ.find("div.area"); var bodyTable = jq.find("table.body"); var areaMax = parseInt(jq.css(s.direction == "horizontal" ? "width" : "height").replace("px")); var bodyMax = s.direction == "horizontal" ? bodyTable.width() : bodyTable.height();$(".overlay", jq).width(bodyMax);if (bodyMax - 1 > areaMax) { $(this).find(".scroller-layout .button-next").widgetElement().enabled(true); s.nextStop = false;if (s.linkSlider) { SliderWidget.create("#" + s.linkSlider, { maxValue: bodyMax - areaMax, pageWidth: areaMax }); } } else { if (s.linkSlider) { $("#" + s.linkSlider).css("display", "none"); }$(this).find(".scroller-layout .scroll-button").css("display", "none"); } }); clearTimeout(this.initInterval); this.initInterval = null; }}); } ;if (typeof SnapToScrollerWidget == "undefined") {var SnapToScrollerWidget = ScrollerWidget.extend({findParts: function(selector) { var jQ = $(selector); var s = jQ.widgetState();if (s.parts == null) { parts = this.base(selector); parts.areaMax = (Math.round(parts.areaMax / s.unitSize) * s.unitSize); } return s.parts; },calcScroll: function(selector, position, animate) { var jQ = $(selector); var s = jQ.widgetState(); var parts = this.findParts(selector);var actualPos = this.base(selector, position); if (animate) { var stepSize = (s.unitSize != null ? Number(s.unitSize) : Number(s.scrollAmount)); actualPos = Math.round(actualPos / stepSize) * stepSize; } return actualPos; },checkInitialButtonStates: function() { $(".Scroller").each(function() { var jQ = $(this); var s = jQ.widgetState(); s.prevStop = true; s.nextStop = true;var jq = $("div.area", jQ); var bodyTable = $("table.body", jq); var areaMax = parseInt(jq.css(s.direction == "horizontal" ? "width" : "height").replace("px")); areaMax = (Math.round(areaMax / s.unitSize) * s.unitSize); var bodyMax = s.direction == "horizontal" ? bodyTable.width() : bodyTable.height();$(".overlay", jq).width(bodyMax);if (bodyMax > areaMax) { $(this).find(".scroller-layout .button-next").widgetElement().enabled(true); s.nextStop = false;if (s.linkSlider) { SliderWidget.create("#" + s.linkSlider, { maxValue: bodyMax - areaMax, pageWidth: areaMax }); } } else { if (s.linkSlider) { $("#" + s.linkSlider).css("display", "none"); }$(this).find(".scroller-layout .scroll-button").css("display", "none"); } }); clearTimeout(ScrollerWidget.initInterval); ScrollerWidget.initInterval = null; } }); } ;if (typeof PagedDataSetFilmstripLoaderWidget == "undefined") {var PagedDataSetFilmstripLoaderWidget = BaseWidget.extend({create: function(selector, settings) { var jQ = this.base(selector, settings); var s = jQ.widgetState();if (jQ.elementData().entityCount == 0) { jQ.hide(); return jQ; } var data = jQ.elementData(); s.totalEntityCount = data.entityCount; s.totalPages = Math.floor(s.totalEntityCount / s.pageSize); s.loadedItems = $.fillArr((s.totalEntityCount), false); var x = s.pages * s.pageSize; while (x-- > 0) { s.loadedItems[x] = true; }s.currentPage = 0; var cT, sel, ev; if (s.emptyItemViewer) { ev = "<div class='entity-viewer'>" + s.emptyItemViewer + "</div>"; } else { ev = "<div class='entity-viewer'><!-- --></div>"; }if (s.direction == "horizontal") { cT = ".filmstrip-table TR"; sel = "<td class='item empty col cell'>" + ev + "</td>"; } else { cT = ".filmstrip-table"; sel = "<tr class='item empty row'><td class='cell'>" + ev + "</td></tr>"; }var loadedEntities = s.totalEntityCount - (s.pageSize * s.pages); var t = $(cT, jQ); while (loadedEntities-- > 0) { t.append($(sel)); }return jQ; },getEntityCount: function(selector) { return $(selector).elementData().entityCount; },clampRange: function(selector, pageNumber, min, max) { var jQ = $(selector); var s = jQ.widgetState(); var itemNum = pageNumber * s.pageSize; var buf = Math.floor((s.pages * s.pageSize) / 2) + 1; var minP = min || itemNum - buf; var maxP = max || itemNum + buf; minP = minP < 0 ? 0 : minP; maxP = maxP > s.totalEntityCount ? s.totalEntityCount : maxP; while (s.loadedItems[minP] && minP < maxP) { minP++; } while (s.loadedItems[max] && maxP > minP) { maxP--; } return [minP, maxP].sort(function(a,b) { return a - b; }); },previousPage: function(selector) { var jQ = $(selector); var s = jQ.widgetState(); s.currentPage--; if (s.currentPage - s.loadThreshold > 0) { if (!s.loadedPages[s.currentPage - s.loadThreshold]) { this.loadItems(selector, s.currentPage - s.loadThreshold, 0, s.pages); } } },nextPage: function(selector) { var jQ = $(selector); var s = jQ.widgetState(); s.currentPage++; if (s.currentPage + s.loadThreshold < s.totalPages) { if (!s.loadedPages[s.currentPage + s.loadThreshold]) { this.loadItems(selector, s.currentPage + s.loadThreshold, s.pages, 0); } } },setPage: function(selector, pageNumber) { var jQ = $(selector); var s = jQ.widgetState();if (pageNumber > 0 && pageNumber < s.totalPages) { ScrollerWidget.scrollToPage($(".Scroller", jQ), pageNumber, true); this.loadPage(selector, pageNumber); } },loadPage: function(selector, pageNumber) { var jQ = $(selector); var s = jQ.widgetState(); s.currentPage = Number(pageNumber); this.loadItems(selector, s.currentPage); },loadItems: function(selector, startPage) { var jQ = $(selector); var s = jQ.widgetState(); var clamp = this.clampRange(selector, startPage); if (s.loadedItems[clamp[0]] && s.loadedItems[clamp[1]]) { return; } for (var p = clamp[0]; p < clamp[1]; p++) { s.loadedItems[p] = true; } var startIndex = clamp[0]; var endIndex = clamp[1]; endIndex = endIndex > startIndex ? endIndex : startIndex;var d, type, marker; if (s.direction == "horizontal") { d = $("<tr>"); type = "TD.item"; marker = "TD"; } else { d = $("<table>"); type = "TR.item"; marker = "TR"; }d.widgetAjax(jQ, "com.fry.ocpsdk.widget.browsers.PagedDataSetFilmstripWidget", type, "dataModel", { "startIndex": startIndex, "endIndex": endIndex }, function() {var fn = function() { var aC = arguments.callee; if (aC.scroller.inmotion) { window.setTimeout(aC, 100); return; } $(".filmstrip-table " + aC.type + ":in(" + aC.startIndex + "-" + aC.endIndex + ")", aC.jQ).remove(); var itemCount = $(aC.marker, aC.thisObj).length; $(".filmstrip-table " + aC.type + ":eq(" + (aC.startIndex - 1) + ")", aC.jQ).after($(aC.marker, aC.thisObj)); var newItems = $(".filmstrip-table " + aC.type + ":in(" + aC.startIndex + "-" + aC.endIndex + ")", aC.jQ); $.initElementData(newItems); $.initWidgets(newItems); aC.jQ.widgetTrigger("itemsloaded", [(aC.startIndex - 1), itemCount, newItems]); }; fn.scroller = $(".Scroller", jQ)[0]; fn.thisObj = this; fn.marker = marker; fn.type = type; fn.startIndex = startIndex; fn.endIndex = endIndex; fn.jQ = jQ;window.setTimeout(fn, 100); } );}}); } $(document).ready(function() { var ofsFC = $(".CategoryViewer .featureClient").offset(); var ofsSC = $(".PagedDataSetFilmstripLoader .Scroller .area").offset(); ScrollerWidget.scrollTo($(".PagedDataSetFilmstripLoader .Scroller"), ofsFC.left - ofsSC.left, false); });