/* SITE WIDE GLOBAL PLUGIN ... */

jQuery.fn.adWidgets = function($params) {
    
    var $defaults = {
        //
    };
    
    var $p = jQuery.extend($defaults, $params);
    var $this = jQuery(this);
    var ie6 = false;
    var newMethods = {
        corner_peel: function($paramaters) {
            var $defs = {
                ContainerID: 'pageflip',
                flipImagePath: '/lovefilm/images/page_flip.png',
                ImageHref: '%c%u',
                ImagePath: '',
                ImageAltTag: ""
            };
            var $v = jQuery.extend($defs, $paramaters);
            
            $(this).prepend('<div id='+ $v.ContainerID +'></div>');
            $('#'+$v.ContainerID).html(
                '<a href="' + $v.ImageHref +'" target="_blank"><img src="' + $v.flipImagePath + '" alt="'+ $v.ImageAltTag +'" /></a><div class="msg_block"></div>'
            ).css({
                position: 'relative',
                right: 0,
                top: 0,
                float: 'right',
                'z-index': 30
            }).hover(function() {
                $("#pageflip img, .msg_block").stop().animate({width: '248px', height: '256px'}, 500);
            }, function() {
                $("#pageflip img").stop().animate({width: '80px', height: '84px'}, 220);
                $(".msg_block").stop().animate({width: '80px', height: '80px'}, 200);
            }).find('img').css({
                width: '80px',
                height: '84px',
                'z-index': 32,
                border: 'none',
                position: 'absolute',
                right: 0,
                top: 0,
                '-ms-interpolation-mode': 'bicubic'
            });
            $('.msg_block').css({
                width: '80px',
                height: '80px',
                overflow: 'hidden',
                position: 'absolute',
                right: '0',
                top: '0',
                'z-index': 31,
                background: 'url('+ $v.ImagePath +') no-repeat right top'
            });
        },
        sponsor: function($paramaters) {
            var $defs = {
                type: 'overlap',
                header: {
                    text: "",
                    href: ""
                },
                ads: [],
                default_target: "_blank"
            };
            var $v = jQuery.extend($defs, $paramaters);
            
            if(!$v.ads.length) return;
            
            var $sponsored = $(this).find('div.dart');
            var headingLevel = ($(this).parents('div.tabbed_content_data').length === 0)? 'h2': 'h4';
            var header = ($v.header.href)? '<' + headingLevel + '><a href="' + $v.header.href + '" target="' + $v.default_target + '">' + $v.header.text + '</a></'+ headingLevel +'>' :  '<'+ headingLevel + '>' + $v.header.text + '</'+ headingLevel +'>';
            $sponsored.append(header);
            
            var ads = '<ol class="'+ $v.type +'">';
            $.each($v.ads,function(i) {
                var ad = $v.ads[i];
                var target = ad.img.target || $v.default_target;
                var style = (i % 2 === 0)? 'even' : 'odd';
                var element = '<li class="'+ style +'">';
                element += ' <a href="' + ad.img.url +'" target="' + target + '">';
                element += '<img src="' + ad.img.src + '"';
                element += ' width="' + ad.img.width + '"';
                element += ' height="' + ad.img.height + '"';
                element += ' alt="' + ad.img.alt + '"';
                element += ' />';
                element += '<span>' + ad.text + '</span>';
                element += '</a>';
                element += '</li>';
                ads += element;
            });
            ads += '</ol>';
            $sponsored.append(ads);
            
            if($v.type.toLowerCase() === 'carousel'){
                var $carObject = $sponsored.find('ol.carousel');
                $carObject.after('<div class="carouselNav"><ol></ol></div>');
                var $carNav = $sponsored.find('.carouselNav');
                $carNav.prepend('<a href="#" class="sponsored_prev">Previous</a>');
                $carNav.append('<a href="#" class="sponsored_next">Next</a>');
                var $carousel = $carObject.cycle({
                    fx: 'scrollHorz',
                    timeout: 4000,
                    speed: 500,
                    prev: '.carouselNav .sponsored_prev',
                    next: '.carouselNav .sponsored_next',
                    pager: '.carouselNav ol',
                    pagerAnchorBuilder: function(idx, slide){
                        return '<li><a href="#">'+ idx  +'</a></li>';
                    }
                });
                
                // deprecated. Use http://docs.jquery.com/Utilities/jQuery.support in future jQuery
                if (($.browser.msie && $.browser.version == "8.0") || !$.browser.msie) {
                    $(this).find('.carouselNav ol').eq(0).css({'display': 'inline-table'}).find('li').css({'display': 'table-cell'});
                }
                $carNav.find('ol a, .sponsored_next, .sponsored_prev').bind('click', function(){
                   $carousel.cycle('pause');
                });
            }
        }
    };
    
    jQuery.each(newMethods, function(i) {
        jQuery.fn[i] = this;
    });
    
    return this.each(function() {
        $this = $(this);
    });
    
};
