1var Hover = Hover || {}; 2 3(function hover() { 4 Hover.maxWidthMobile = 1280; 5 6 var videoMuted = true; 7 var timeoutHover; 8 var timeoutVideo; 9 var timeoutPrice; 10 var statusHover = new Object(); 11 var lastElement; 12 var lastUl; 13 var hostName = window.location.hostname; 14 15 var lastElementId; 16 var lastUlId; 17 var elementId; 18 var ulId; 19 20 var getMediaPrice = function (element) { 21 var elementId = $(element).closest("li").attr("mediaid"); 22 23 $(element).find(".priceContainer").html("").css({ "opacity": 0 }).addClass("loadingIcon").delay(1500).queue(function () { 24 $(this).css({ "opacity": 1 }).dequeue(); 25 }); 26 $.ajaxSetup({ cache: false }); 27 $.ajax({ 28 type: "GET", 29 url: "/Media/_MoviePrice", 30 data: "m=" + elementId, 31 success: function (data) { 32 fillMediaPrice(element, data); 33 }, 34 error: function (xhr, ajaxOptions, thrownError) { 35 console.log("getMediaPrice error (" + elementId + "):", thrownError); 36 } 37 38 }); 39 }; 40 41 var getInfoPosition = function (element) { 42 var elementPosition = $(element).offset().left; 43 var elementSize = $(element).parent().width(); 44 if (elementPosition < $(window).width() - (elementSize + elementPosition)) return "right"; 45 else return "left"; 46 } 47 48 var fillMediaPrice = function (element, data) { 49 var elementId = $(element).closest("li").attr("mediaid"); 50 if (statusHover[elementId]) { 51 $(element).find(".priceContainer").removeClass("loadingIcon").dequeue().html(data); 52 if (getInfoPosition(element) == "right") { 53 $(element).find(".hoverPrice").removeClass("hoverPriceLeft").addClass("hoverPriceRight"); 54 } else { 55 $(element).find(".hoverPrice").removeClass("hoverPriceRight").addClass("hoverPriceLeft"); 56 } 57 $(element).find(".mediaMember").addClass("mediaMemberEnter"); 58 $(element).find("priceCut").addClass("priceCutDel"); 59 } 60 }; 61 62 Hover.verifyInfoPosition = function (element) { 63 var elementPosition = $(element).offset().left; 64 var elementSize = $(element).width(); 65 var marginOffset = 120; 66 67 var textSize; 68 if (getInfoPosition(element) == "right") { 69 $(element).find(".mediaHover").removeClass("mediaHoverLeft").addClass("mediaHoverRight"); 70 $(element).find(".videoMute").removeClass("buttomLeft").addClass("buttomRight"); 71 $(element).find(".mediaSynopsi .buttons").removeClass("buttomLeft").addClass("buttomRight"); 72 textSize = $(window).width() - (elementPosition + elementSize + marginOffset); 73 } else { 74 $(element).find(".mediaHover").removeClass("mediaHoverRight").addClass("mediaHoverLeft"); 75 $(element).find(".videoMute").removeClass("buttomRight").addClass("buttomLeft"); 76 $(element).find(".mediaSynopsi .buttons").removeClass("buttomRight").addClass("buttomLeft"); 77 textSize = elementPosition; 78 } 79 $(element).find(".hoverTextTitle").css({ "max-width": textSize + "px" }); 80 $(element).find(".mediaSynopsi").fadeIn(); 81 }; 82 83 Hover.verifyScrollPosition = function (element) { 84 var marginOffset = 65; 85 var elementPositionX = $(element).offset().left; 86 var elementWidth = $(element).width(); 87 88 if (elementPositionX + elementWidth > $(window).width() - marginOffset) { 89 newPosition = $(element).closest("ul").position().left - (elementWidth - ($(window).width() - elementPositionX)) - marginOffset; 90 $(element).closest("ul").css({ "left": newPosition }); 91 92 setTimeout(function () { Carousel.init($(element).closest("ul")) }, 0.3 * 1000); 93 } else if (elementPositionX < marginOffset) { 94 newPosition = $(element).closest("ul").position().left - elementPositionX + marginOffset; 95 if (newPosition >= 0) newPosition = 0;
96 $(element).closest("ul").css({ "left": newPosition }); 97 98 setTimeout(function () { Carousel.init($(element).closest("ul")) }, 0.3 * 1000); 99 } 100 }; 101 102 Hover.checkHoverPosition = function (e, element) { 103 lastElementId = $(lastElement).closest("li").attr("mediaid"); 104 lastUlId = $(lastElement).closest("li").closest("ul").attr("id"); 105 statusHover[lastElementId] = false; 106 107 elementId = $(element).closest("li").attr("mediaid"); 108 ulId = $(element).closest("li").closest("ul").attr("id"); 109 statusHover[elementId] = true; 110 111 if (lastElementId != elementId) clearTimeout(timeoutVideo); 112 113 clearTimeout(timeoutHover); 114 if (!Carousel.scrollActive) { 115 if ($(window).width() > Hover.maxWidthMobile + 6000) Hover.fullHover(e, element, lastElementId, lastUlId, elementId, ulId); 116 else Hover.mobileHover(e, element); 117 } 118 }; 119 Hover.mobileHover = function (e, element) { 120 if (lastElementId != elementId) { 121 $(element).addClass("mediaMobilePreview").addClass("transitionDelay0"); 122 Hover.disableHover(e, lastElement); 123 lastElement = element; 124 } 125 }; 126 Hover.mobileOut = function (e, element) { 127 if ($(window).width() <= Hover.maxWidthMobile + 6000) { 128 $(element).removeClass("mediaMobilePreview"); 129 Hover.disableHover(e, element); 130 } 131 }; 132 133 Hover.fullHover = function (e, element, lastElementId, lastUlId, elementId, ulId) { 134 timeoutHover = setTimeout(function () { 135 if (lastElementId != elementId) { 136 if (ulId != lastUlId) { 137 if (lastUl) { 138 lastUl.closest(".mediaCarousel").find(".carousel_title_panel").removeClass('carousel_title_panel_media_hover'); 139 lastUl.removeClass('hoverHeightLi'); 140 } 141 lastUl = $(element).closest("li").closest("ul"); 142 } 143 144 145 var imgLandscape = $(element).find(".imgStyle_landscape"); 146 var timeOffset = 0.3; 147 if (ulId == lastUlId) { 148 imgLandscape.addClass("transitionDelay0"); 149 $(element).addClass("transitionDelay0"); 150 $(lastElement).addClass("transitionDelay0"); 151 timeOffset = 0; 152 } else { 153 imgLandscape.removeClass("transitionDelay0"); 154 $(element).removeClass("transitionDelay0"); 155 $(lastElement).removeClass("transitionDelay0"); 156 } 157 158 clearTimeout(timeoutPrice); 159 timeoutPrice = setTimeout(function () { 160 getMediaPrice(element); 161 Hover.verifyInfoPosition(element); 162 Hover.verifyScrollPosition(element); 163 }, (0.35 + timeOffset) * 1000); 164 165 imgLandscape.show().attr("opacity", 0).addClass("imgLandscapeHover"); 166 $(element).addClass("mediaPreview"); 167 $(element).closest(".mediaCarousel").find(".carousel_title_panel").addClass('carousel_title_panel_media_hover'); 168 $(element).closest("li").addClass('hoverHeightLi'); 169 $(element).closest("li").closest("ul").addClass('hoverHeightLi'); 170 171 172 var video = $(element).find("video"); 173 video.attr("src", ""); 174 video.show(); 175 176 clearTimeout(timeoutVideo); 177 timeoutVideo = setTimeout(function () { 178 playVideo(element, video, imgLandscape); 179 }, 2 * 1000); 180 181 Hover.disableHover(e, lastElement); 182 lastElement = element; 183 } 184 }, 0.2 * 1000); 185 }; 186 187 function playVideo(element, video, imgLandscape) { 188 video.attr("src", $(element).find("#trailerUrl").val()); 189 video[0].onloadedmetadata = function () { 190 elementId = $(element).closest("li").attr("mediaid"); 191 if (statusHover[elementId]) onPlayVideo(element, video, imgLandscape); 192 }; 193 } 194 function onPlayVideo(element, video, imgLandscape) { 195 video[0].play(); 196 video.prop('muted', videoMuted); 197 $(element).find(".videoMute").show(); 198 $(element).find(".imgBase").fadeOut(); 199 imgLandscape.delay(1000).queue(function () { 200 $(this).removeClass("imgLandscapeHover").dequeue(); 201 }); 202 } 203 204 Hover.disableHover = function (e, element) { 205 try { $(element).find("video")[0].pause(); } catch (e) { e }; 206 207 $(element).closest("li").removeClass('hoverHeightLi'); 208 $(element).removeClass("mediaPreview").removeClass("mediaMobilePreview"); 209 $(element).find(".videoMute").hide(); 210 $(element).find("priceCut").removeClass("priceCutDel"); 211 $(element).find(".priceContainer").html("").removeClass("loadingIcon").dequeue(); 212 $(element).find(".mediaMember").removeClass("mediaMemberEnter"); 213 $(element).find(".mediaHover").removeClass("mediaHoverRight").removeClass("mediaHoverLeft"); 214 $(element).find(".hoverPrice").removeClass("hoverPriceRight").removeClass("hoverPriceLeft"); 215 $(element).find(".mediaSynopsi").hide(); 216 217 setTimeout(function () { 218 $(element).find(".imgBase").fadeIn(); 219 $(element).find(".imgHover").removeClass("imgLandscapeHover").dequeue(); 220 }, 0.1 * 1000); 221 }; 222 223 Hover.toggleVolume = function (e, element) { 224 var video = $(element); 225 if (video.prop('muted')) { 226 video.prop('muted', false); 227 videoMuted = false;
228 $(element).closest("li").find(".videoMute").addClass("videoMuted"); 229 } else { 230 video.prop('muted', true); 231 videoMuted = true; 232 $(element).closest("li").find(".videoMute").removeClass("videoMuted"); 233 } 234 }; 235 236 Hover.toggleInfo = function (e, element) { 237 $(element).fadeToggle(); 238 }; 239 Hover.details = function (uniqueUrl) { 240 if (!Carousel.scrollActive) { 241 Helpers.showLoading(); 242 window.location.href = uniqueUrl; 243 } 244 } 245 Hover.executeRent = function (element) { 246 var elementId = $(element).closest("li").attr("mediaid"); 247 Helpers.showPaymentForm(elementId, 1); 248 }; 249 Hover.executeBuy = function (element) { 250 var elementId = $(element).closest("li").attr("mediaid"); 251 Helpers.showPaymentForm(elementId, 2); 252 }; 253 Hover.executeAcquired = function (element, episodeId) { 254 var elementId = (episodeId == 0) ? $(element).closest("li").attr("mediaid") : episodeId; 255 Helpers.startPlayback(elementId); 256 }; 257 Hover.executeSubscribeFree = function (element, episodeId) { 258 var elementId = (episodeId == 0) ? $(element).closest("li").attr("mediaid") : episodeId; 259 Helpers.startSVODAuthorize(elementId); 260 }; 261 Hover.executeSubscribeNow = function (subscriptionURL) { 262 Helpers.showLoading(); 263 if (subscriptionURL == 'videoclub') 264 window.location.href = "/flow"; 265 else 266 window.location.href = "/subscription/" + subscriptionURL; 267 }; 268 269 Hover.carouselDisableHover = function () { 270 clearTimeout(timeoutHover); 271 clearTimeout(timeoutVideo); 272 273 var lastElementId = $(lastElement).closest("li").attr("mediaid"); 274 statusHover[lastElementId] = false; 275 timeoutHover = setTimeout(function () { 276 clearTimeout(timeoutPrice); 277 if (lastUl) { 278 lastUl.closest(".mediaCarousel").find(".carousel_title_panel").removeClass('carousel_title_panel_media_hover'); 279 lastUl.removeClass('hoverHeightLi'); 280 } 281 Hover.disableHover(null, lastElement); 282 lastElement = null; 283 }, 0.3 * 1000); 284 }; 285 286 287 288 289 290 Hover.hover = function (obj) { 291 292 var $element = $(obj); 293 294 $element.on({ 295 click: function () { 296 Hover.deselect(); 297 // 298 } 299 }); 300 } 301 Hover.deselect = function () { 302 // 303 }; 304})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.