jQuery(document).ready(function($) { __da_photo_roll_in_params.init = function() { __da_photo_roll_in_params.height = 100; __da_photo_roll_in_params.rollContainerId = 'DA_ROLL_CONTAINER_'; __da_photo_roll_in_params.rollBodyId = 'DA_ROLL_BODY_'; __da_photo_roll_in_params.tmpCls = 'DA-PHOTO-ROLL-CONTAINER'; if (typeof __da_photo_roll_in_settings == 'object') __da_photo_roll_in_params = $.extend(__da_photo_roll_in_params, __da_photo_roll_in_settings); __da_photo_roll_in_params.bannerIndex = 0; __da_photo_roll_in_params.loads = []; if (!__da_photo_roll_in_params.eventType) __da_photo_roll_in_params.eventType = 'over'; if (!__da_photo_roll_in_params.selector) __da_photo_roll_in_params.selector = 'img'; __da_photo_roll_in_params.processing(); $(window).resize(function() { $(__da_photo_roll_in_params.selector).each(function() { var el = $(this); var da_id = el.attr('da_id'); if (da_id) { var roll = $('#' + __da_photo_roll_in_params.rollContainerId + da_id); if (roll.length) { var borderTop = 0, borderLeft = 0; if (el.css('border-top-width')) borderTop = parseInt(el.css('border-top-width')); if (el.css('border-left-width')) borderLeft = parseInt(el.css('border-left-width')); roll.css({ 'left': (el.offset().left + borderLeft), 'top': (el.offset().top + borderTop), 'width': el.width() + 'px', 'margin-top': (el.height() - __da_photo_roll_in_params.height) + 'px' }); } if (__da_photo_roll_in_params.eventType == 'scroll') { if (__da_photo_roll_in_params.inWindow(el)) __da_photo_roll_in_params.funcOver(el); else if ( __da_photo_roll_in_params.rotation && __da_photo_roll_in_params.loads[el.attr('da_id')] && __da_photo_roll_in_params.loads[el.attr('da_id')].loaded && __da_photo_roll_in_params.loads[el.attr('da_id')].viewed &&__da_photo_roll_in_params.outWindow(el) ) { $('#' + __da_photo_roll_in_params.rollContainerId + el.attr('da_id')).remove(); el.removeClass('DA-HOVERED'); } } } }); }); if (__da_photo_roll_in_params.eventType == 'scroll') { $(window).scroll(function() { $(__da_photo_roll_in_params.selector).each(function() { var el = $(this); var da_id = el.attr('da_id'); if (da_id) { if (__da_photo_roll_in_params.inWindow(el)) __da_photo_roll_in_params.funcOver(el); else if ( __da_photo_roll_in_params.rotation && __da_photo_roll_in_params.loads[el.attr('da_id')] && __da_photo_roll_in_params.loads[el.attr('da_id')].loaded && __da_photo_roll_in_params.loads[el.attr('da_id')].viewed &&__da_photo_roll_in_params.outWindow(el) ) { $('#' + __da_photo_roll_in_params.rollContainerId + el.attr('da_id')).remove(); el.removeClass('DA-HOVERED'); } } }); }); } }; __da_photo_roll_in_params.redesign = function(roll) { roll.find('table table').css('margin', 0); roll.find('tr:first td, img').css({ 'padding': 0, 'margin': 0, 'line-height': '12px' }); roll.find('td.da_adp_title, td.da_adp_img').css({ 'padding-right': '9px' }); roll.find('td.da_adp_title a').css({ 'color': '#fff', 'line-height': 'normal', 'padding-right': '9px' }); }; __da_photo_roll_in_params.fixPosition = function(el) { var borderTop = 0, borderLeft = 0; if (el.css('border-top-width')) borderTop = parseInt(el.css('border-top-width')); if (el.css('border-left-width')) borderLeft = parseInt(el.css('border-left-width')); $('#' + __da_photo_roll_in_params.rollContainerId + el.attr('da_id')).css({ 'left': (el.offset().left + borderLeft), 'top': (el.offset().top + borderTop) }); } __da_photo_roll_in_params.load = function(el, callback) { var num = __da_photo_roll_in_params.getSizeIndex(el) + 1; jQuery.ajax({ url: __da_photo_roll_in_params.url + "show.cgi?adp=" + __da_photo_roll_in_params.adpId + "&json=4&num=" + num, type: 'GET', dataType: 'jsonp', jsonp: 'callback', // or false jsonpCallback: 'jsonpCallback', cache: false, async: false, success: function(data) { var str = data[0]; var p = str.indexOf(''); if (p > -1) { str = $.trim(str.substr(p + 8)); if (!__da_photo_roll_in_params.stylesLoaded) { __da_photo_roll_in_params.stylesLoaded = true; $('body').append($.trim(data[0].substring(0, p + 8))); } } var roll = $(str); __da_photo_roll_in_params.redesign(roll); if (roll.height()) __da_photo_roll_in_params.height = roll.height(); roll.attr({ 'id': __da_photo_roll_in_params.rollContainerId + el.attr('da_id'), 'da_id': el.attr('da_id'), 'class': __da_photo_roll_in_params.cls }); roll.css({ 'position': 'absolute', 'left': el.offset().left + 'px', 'top': el.offset().top + 'px', 'z-index': 100000, 'width': el.width() + 'px', 'height': __da_photo_roll_in_params.height + 'px', 'margin-top': (el.height() - __da_photo_roll_in_params.height) + 'px' }); roll.children(':first').attr('id', __da_photo_roll_in_params.rollBodyId + el.attr('da_id')); roll.children(':first').css({ 'height': __da_photo_roll_in_params.height + 'px', 'bottom': '-' + __da_photo_roll_in_params.height + 'px' }); roll.children(':first').children(':first').css({ '-moz-opacity': (__da_photo_roll_in_params.shadow / 100), '-khtml-opacity': (__da_photo_roll_in_params.shadow / 100), 'opacity': (__da_photo_roll_in_params.shadow / 100), 'filter': 'alpha(opacity=' + __da_photo_roll_in_params.shadow + ')' }); if (__da_photo_roll_in_params.showClose) { roll.children(':first').children(':last').prepend( 'x' ); } roll.find('td.da_adp_teaser').each(function(index) { $(this).css('width', (100 / num) + '%'); }); $('body').append(roll); __da_photo_roll_in_params.loads[el.attr('da_id')].loaded = true; if (__da_photo_roll_in_params.eventType == 'scroll') { if (__da_photo_roll_in_params.inWindow(el)) __da_photo_roll_in_params.funcOver(el); } else { $('#' + __da_photo_roll_in_params.rollContainerId + el.attr('da_id')).mouseenter(function() { var el = $('[da_id=' + $(this).attr('da_id') + ']').eq(0); __da_photo_roll_in_params.funcOver(el); }); $('#' + __da_photo_roll_in_params.rollContainerId + el.attr('da_id')).mouseleave(function() { var el = $('[da_id=' + $(this).attr('da_id') + ']').eq(0); __da_photo_roll_in_params.funcOut(el); }); } callback(el); } }); }; __da_photo_roll_in_params.funcOver = function(el) { if (!el || el.type == 'mouseenter') el = $(this); if (el.get(0).tagName.toLowerCase() == 'div') el = $('[da_id=' + el.attr('da_id') + ']').eq(0); if ( el.is(':hidden') || el.hasClass('DA-HOVERED') ) return; el.addClass('DA-HOVERED'); var callback = function(el) { if (el.hasClass('DA-HOVERED')) { __da_photo_roll_in_params.fixPosition(el); $('#' + __da_photo_roll_in_params.rollBodyId + el.attr('da_id')).stop(true); $('#' + __da_photo_roll_in_params.rollBodyId + el.attr('da_id')).animate({ bottom: 0 }, { duration: (__da_photo_roll_in_params.delayShow ? __da_photo_roll_in_params.delayShow : 150), complete: function() { __da_photo_roll_in_params.loads[el.attr('da_id')].viewed = true; } }); } }; if ( !__da_photo_roll_in_params.loads[el.attr('da_id')] || __da_photo_roll_in_params.rotation && __da_photo_roll_in_params.loads[el.attr('da_id')].loaded && __da_photo_roll_in_params.loads[el.attr('da_id')].viewed && ( __da_photo_roll_in_params.eventType != 'over' || __da_photo_roll_in_params.loads[el.attr('da_id')].hidden && $('#' + __da_photo_roll_in_params.rollBodyId + el.attr('da_id')).css('bottom') == '-' + $('#' + __da_photo_roll_in_params.rollBodyId + el.attr('da_id')).height() + 'px' ) ) { if (__da_photo_roll_in_params.loads[el.attr('da_id')]) $('#' + __da_photo_roll_in_params.rollContainerId + el.attr('da_id')).remove(); __da_photo_roll_in_params.loads[el.attr('da_id')] = { preloaded: true }; __da_photo_roll_in_params.load(el, callback); } else if (__da_photo_roll_in_params.loads[el.attr('da_id')].loaded) { callback(el); } }; __da_photo_roll_in_params.funcOut = function(el) { if (!el || el.type == 'mouseleave') el = $(this); if (el.get(0).tagName.toLowerCase() == 'div') el = $('[da_id=' + el.attr('da_id') + ']').eq(0); __da_photo_roll_in_params.fixPosition(el); el.removeClass('DA-HOVERED'); $('#' + __da_photo_roll_in_params.rollBodyId + el.attr('da_id')).stop(true); $('#' + __da_photo_roll_in_params.rollBodyId + el.attr('da_id')).animate({ bottom: '-' + __da_photo_roll_in_params.height + 'px' }, { duration: (__da_photo_roll_in_params.delayHide ? __da_photo_roll_in_params.delayHide : 150), complete: function() { if (!el.hasClass('DA-HOVERED')) __da_photo_roll_in_params.loads[el.attr('da_id')].hidden = true; } }); }; __da_photo_roll_in_params.inWindow = function(el) { var scrollTop = $(window).scrollTop(); var scrollLeft = $(window).scrollLeft(); var windowHeight = $(window).height(); var windowWidth = $(window).width(); var offset = el.offset(); __da_lib.dbglog('!!!' + scrollTop + ' <= ' + offset.top + ' && ' + (el.height() + offset.top) + ' <= ' + (scrollTop + windowHeight)); if ( scrollTop <= offset.top && (el.height() + offset.top) <= (scrollTop + windowHeight) && scrollLeft <= offset.left && (el.width() + offset.left) <= (scrollLeft + windowWidth) ) return true; return false; }; __da_photo_roll_in_params.outWindow = function(el) { var scrollTop = $(window).scrollTop(); var scrollLeft = $(window).scrollLeft(); var windowHeight = $(window).height(); var windowWidth = $(window).width(); var offset = el.offset(); if ( scrollTop > (el.height() + offset.top) || offset.top > (scrollTop + windowHeight) || scrollLeft > (el.width() + offset.left) || offset.left > (scrollLeft + windowWidth) ) return true; return false; }; __da_photo_roll_in_params.processing = function() { $(__da_photo_roll_in_params.selector).each(function() { if ( $(this).get(0).tagName.toLowerCase() == 'img' && !$(this).get(0).complete ) { $(this).load(function() { __da_photo_roll_in_params.checkBanner($(this)); }); return; } __da_photo_roll_in_params.checkBanner($(this)); }); }; __da_photo_roll_in_params.checkBanner = function(el) { if (el.is(':hidden')) return; var ind = __da_photo_roll_in_params.getSizeIndex(el); if (ind >= 0) { if (!el.attr('da_id')) { __da_photo_roll_in_params.bannerIndex++; el.attr('da_id', __da_photo_roll_in_params.bannerIndex); if (__da_photo_roll_in_params.eventType == 'scroll') { if (__da_photo_roll_in_params.inWindow(el)) __da_photo_roll_in_params.funcOver(el); } else { el.mouseenter(__da_photo_roll_in_params.funcOver); el.mouseleave(__da_photo_roll_in_params.funcOut); } } } }; __da_photo_roll_in_params.getSizeIndex = function(el) { var imgWidth = el.width(); var imgHeight = el.height(); var ind = -1; for (var n in __da_photo_roll_in_params.sizes) { var s = __da_photo_roll_in_params.sizes[n]; if (!s.width || !s.height) { continue; } if ( imgWidth >= s.width && imgHeight >= s.height ) { ind = n; continue; } else { break; } } return parseInt(ind); } if (!__da_lib.dbglog) { // output debug info __da_lib.dbglog = function(str, debugMode) { if (!debugMode) debugMode = window.location.hash && window.location.hash.substring(1) == '__da_debug'; if (!debugMode) //nothing if no debug return; if (console) console.log(str); }; } __da_photo_roll_in_params.init(); });