/// <reference path="jquery-1.4.1-vsdoc.js" />

/* add .JS  */
$(document).ready(function()
{
    //    CleanCmsOutput();
    //$("html").addClass("JS");
    if (IsOutsideSitefinity())
    {
        //CheckCookie("MagnersUKAgeVerify", "http://magners-av.glueserv.co.uk", window.location.href);
    }
    // Dont do when viewing inside Sitefinity Editor
    FixForIE6();
    if (IsOutsideSitefinity())
    {
        if (FlashDetect.installed && FlashDetect.versionAtLeast(9, 0))
            PrepForRestyling();
        else
            AddWarnBoxForNoFlash();
    }
    RewriteHeadersForStyling('.site h1');
    RewriteHeadersForStyling('.site h2');

    if (IsOutsideSitefinity())
    {
        SetupExpandableBackground();
    }
    if (FlashDetect.installed && FlashDetect.versionAtLeast(9, 0))
    {
        LoadSifr('');
    }
    Linkify($('.youtube_desc'));
    
    if (IsOutsideSitefinity())
    {
        SetupHeroBoxes();
        LinkifyTweets();
        EqualHeightForEachRow();
        EqualWidthForSideNav();
        SetupYoutubeThumbnails();
        OverrideExpandableList();
    }
    AddGraphicQuotes();
    SetupDropShadows();

    SetExternalLinksToOpenNewWindow();
    EqualHeightForEachRow();
    AttachShadowbox();
    ShadowboxInit();

    if ($(".facebook_fanbox_widget").length > 0)
    {
        setTimeout("LoadFacebookFanboxWidget()", 600);
    }

    //   setTimeout("PreloadImages()", 800);
});

function IsOutsideSitefinity()
{
    return $(".sf_wrapper").length == 0 && $(".workArea").length == 0 && $('.theWrapper').length == 0;
}

function AddWarnBoxForNoFlash()
{
    $('#content').append('<div class="warn_box"><div class="warn_msg">This site requires Flash version 9.0 or higher.</div></div>');
}

function OverrideExpandableList()
{
    $('.sf_expandableList h3 a').click(function()
    {
        $(this).parent().siblings().slideToggle("slow");
        return false;
    })    

//$('.sf_expandableList a').attr('href', '#');
//        $('.sf_expandableList').accordion({
//        autoheight: false,
//            //selectedClass: 'active',
//            header: '> li > h3'
//        });
}

function ShadowboxInit()
{
    try
    {
        Shadowbox.init({ overlayOpacity: '0.8', viewportPadding: 10 });
    }
    catch (err)
    {
    }
 }

function CleanCmsOutput()
{
    //todo: remove ending nsbp; and unnecessary <p>
}

function AttachShadowbox()
{
    $('.terms_link').attr('rel', 'shadowbox;height=600;width=800');
}

function PrepForRestyling()
{
    // hide elements while they are being restyled
    //$('.hero-box').css('visibility', 'hidden');
    //$('.hero-box-tab-header').css('visibility', 'hidden');  
    $('.hero-box .content_holder').css('visibility', 'hidden');
    $('.content_holder h1').parent().css('visibility', 'hidden');
    $('.content_holder h2').parent().css('visibility', 'hidden');
}

function PreloadImages()
{
    try
    {
        $.preloadCssImages();
    }
    catch (err)
        {
            
    }
}

function FixForIE6()
{
    var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
	var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);

	if (jQuery.browser.msie && (ie55 || ie6))
	{
	    $('.expandable-bg').removeClass('expandable-bg');
	    $('.has-dropshadow').removeClass('has-dropshadow');
	    $('.hero-box .posTopRight').css('right', '45px');
	}
}

function SetExternalLinksToOpenNewWindow()
{
    $('a[href^=http]').click(function()
    {
        if (this.rel.toLowerCase().indexOf('shadowbox') < 0)
        {
            window.open(this.href);
            return false;
        }
    });
}

function Linkify(element)
{
    try
    {
        element.each(function()
        {
            var text = $(this).html();

            text = text.replace(/(https?:\/\/\S+)/gi, function(s)
            {
                return '<a href="' + s + '">' + s + '</a>';
            });
            $(this).html(text);
        });
    }
    catch (err)
    {
    }
}

function LinkifyTweets()
{
    try
    {
        $('.tweet .tweet_status').each(function()
        {
            var text = $(this).html();
            
            text = text.replace(/(https?:\/\/\S+)/gi, function(s)
            {
                return '<a href="' + s + '">' + s + '</a>';
            });

            text = text.replace(/(^|)@(\w+)/gi, function(s)
            {
                return '<a href="http://twitter.com/' + s + '">' + s + '</a>';
            });

            text = text.replace(/(^|)#(\w+)/gi, function(s)
            {
                return '<a href="http://search.twitter.com/search?q=' + s.replace(/#/, '%23') + '">' + s + '</a>';
            });

            //var linkable_content = $(this).html().replace(/(https?:\/\/[^ ;|\\*'"!,()<>]+\/?)/g, '<a href="$1">$1</a>');
            $(this).html(text);
        });

    }
    catch (err)
    {
    }
}

function LoadFacebookFanboxWidget()
{
    FB.init("52407f2f801b1d5c4862b638faf5ce50")
}
function LoadAfterSifrHeaders()
{
    try
        {
        EqualHeightForEachRow();
        FixForIE6();
        $('.content_holder h1').parent().css('visibility', 'visible');
        $('.content_holder h2').parent().css('visibility', 'visible');
    }
    catch (err)
    {
    }
}
function PositionTabSelector()
{
    try
    {
        var selectedTab = $('.hero-box-tablist li.hero-box-tab.ui-tabs-selected');

        if (selectedTab.length > 0 && selectedTab.position() != null && $('#hero-box-pointer').length > 0)
        {
            var pos = selectedTab.position();
            var pointer = $('#hero-box-pointer');
            pointer.css({
                'top': selectedTab.position().top - pointer.height() + 1 + 'px',
                'left': (pos.left + (selectedTab.width() - pointer.width()) / 2) + 'px',
                'visibility': 'visible'
            });
            pointer.stop().animate({ opacity: 1 });
        }
        $('.hero-box .content_holder').css('visibility', 'visible');
    }
    catch (err)
    {
    }
}

function SetupExpandableBackground()
{
    try
    {
        var expandableBgElements = $('.expandable-bg');
        expandableBgElements.wrapInner('<div class="curvedBoxInnerContent cF"></div>');
        expandableBgElements.prepend('<div class="curvedBoxBottom curvedBoxBg"></div>');
        expandableBgElements.wrapInner('<div class="curvedBoxContent curvedBoxBg"><div class="curvedBoxWrapper"></div></div>');
        expandableBgElements.prepend('<div class="curvedBoxTop curvedBoxBg"><div class="curvedBoxBg"></div></div>');
        expandableBgElements.wrapInner('<div class="curvedBox"></div>');
    }
    catch (err)
    {
    }
}

function SetupDropShadows()
{
    try
    {
        $('.has-dropshadow').each(function(i)
        {
            var parentElement = $(this).parent();
            if (parentElement.is('a'))
            {
                parentElement.addClass("link_under_dropshadow");
                parentElement = parentElement.parent();
            }
            if ($(this).hasClass('nutshell'))
                parentElement = $(this);

            parentElement.addClass("posRel");
            parentElement.append('<span class="dropshadow"></span>');
        });
    }
    catch (err)
    {
    }
}

function SetupYoutubeThumbnails()
{
    try
    {
        $('.youtube_thumb_img').each(function(i)
        {
            var parentElement = $(this).parent();
            parentElement.addClass("posRel");
            parentElement.append('<span class="youtube_button"></span>');
        });
    }
    catch (err)
    {
    }
}

function SetupHeroBoxes()
{
    try
    {
        // foreach herobox, get H2s and create LIs
        // assign IDs and hrefs
        // wrap in <div id="heroboxes">
        // $(".heroboxes").tabs({ fx: { opacity: 'toggle'} });

        if ($('.hero-box').length > 0)
        {
            //        var columnClass = 'column_2';
            //        if ($('.hero-box').hasClass('column_3'))
            //            columnClass = 'column_3';
            //        else if ($('.hero-box').hasClass('column_2'))
            //            columnClass = 'column_2';
            $('.hero-box').wrapAll('<div class="hero-boxes" />');
            var heroboxes = $('.hero-boxes');
            //heroboxes.addClass(columnClass);
            //heroboxes.append('<ul class="hero-box-tablist cF cB"></ul>');
            heroboxes.append('<div id="hero-box-pointer" style="opacity:0;visibility:hidden;"></div>');
            heroboxes.append(heroboxes.parent().children('.hero-box-tab-header'));
            heroboxes.children('.hero-box-tab-header').wrap('<li class="hero-box-tab"></li>');
            heroboxes.children('.hero-box-tab').wrapAll('<ul class="hero-box-tablist cF cB"></ul>');
            var counter = 0;

            $('.hero-box').each(function(i)
            {
                counter += 1;
                $(this).attr("id", "hero-box" + counter);

                // $('.hero-box-tablist').append('<li class="hero-box-tab"><h3><a class="hero-box-tab-link" href="#hero-box' + counter + '">Tab ' + counter + '</a></h3></li>');
            });
            counter = 0;
            $('a.hero-box-tab-link').each(function(i)
            {
                counter += 1;
                $(this).attr("href", "#hero-box" + counter);
            });

            heroboxes.tabs({ fx: { opacity: 'toggle'} });

            var pointer = $('#hero-box-pointer');
            
            heroboxes.bind('tabsselect', function(event, ui)
            {
                var el = $(ui.tab);
                var left = (el.position().left + (el.width() - pointer.width()) / 2) + 'px';
                // move pointer on tabsselect
                pointer.animate({ "left": left }, "slow");
                pointer.css('visibility', 'visible');
                $('.hero-box .content_holder').css('visibility', 'hidden');
            });
            heroboxes.bind('tabsshow', function(event, ui)
            {
                // run sifr on shown tabs

                ReLoadSifrHeroBoxes('');
                $('.hero-box .content_holder').css('visibility', 'visible');
            });
            heroboxes.addClass('hero-box-count-' + counter);
            $('.hero-box').css('visibility', 'visible');
            $('.hero-box-tab-header').css('visibility', 'visible');
            
            //        var selectedTab = $('.hero-box-tablist li.hero-box-tab.ui-tabs-selected');
            //        var pos = selectedTab.position();

            //        pointer.css({
            //            'position': 'absolute',
            //            'top': (pos.top - pointer.height() +1) + 'px',
            //            'left': (pos.left + (selectedTab.width() - pointer.width()) / 2) + 'px'
            //        });
        }
    }
    catch (err)
    {
    }
}

//function GroupRowsAndColumns()
//{
//    $('.row').each(function()
//    {
//        $(this).nextUntil('.row', '.column').appendTo(this);
//    } 
//}

function EqualHeightForEachRow()
{
    try
    {
        ReserveSpaceForAbsoluteElements();
        $('.row, .curvedBoxInnerContent').each(function()
        {
            EqualHeight($(this).children('.column:not(.column_3)'));
            EqualHeight($(this).children('.hero-box'));
        });
        $('.column').each(function()
        {
            EqualHeight($(this).find('.productImage'));
        });

        $('.cider-makers-tale').find('.primary-link').css('bottom', '20px');
        $('.nutshell').find('.primary-link').each(function()
        {
            $(this).css({
                "width": $(this).width(),
                "position": "absolute",
                'bottom': '24px'
            });
        });
        // Need to add margin to prev element to ensure sufficient space 20px from bottom + 16px for the primary-link at standard font size
        $('.cider-makers-tale').siblings().find('.primary-link').css('bottom', '20px').prev().css('margin-bottom', '36px');
        $('.nutshell').siblings().find('.primary-link').css({ 'bottom': '16px', 'position': 'absolute' }).prev().css('margin-bottom', '36px');

        SetPrimaryLinksInContentToAbsoluteBottom();
    }
    catch (err)
    {
    }
}

function EqualHeight(group)
{
    try
    {
        if (group != null && group.length > 0)
        {
            tallest = 0;
            group.each(function()
            {
                thisHeight = $(this).height();

                if (thisHeight > tallest)
                {
                    tallest = thisHeight;
                }
            });
            if ($.browser.msie && $.browser.version < 7)
            {
                group.height(tallest);
            }
            else
            {
                group.find('.curvedBoxInnerContent').css("min-height", tallest - 42);
                group.css("min-height", tallest);
            }
        }
    }
    catch (err)
    {
    }
}

function EqualWidthForSideNav()
{
    try
    {
        $('.side_nav ul').each(function()
        {
            EqualWidth($(this).find('a'));
        });
    }
    catch (err)
    {
    }
}
function EqualWidth(group)
{
    try
        {
        if (group != null && group.length > 0)
        {
            widest = 0;
            group.each(function()
            {
                thisWidth = $(this).width();
                if (thisWidth > widest)
                {
                    widest = thisWidth;
                }
            });
            group.parentsUntil('ul').width(widest);
        }
    }
    catch (err)
    {
    }
}

function RewriteTopNavForStyling()
{
    try
    {
        // split the links in the header nav in half and wrap in appropriate styles

        $('.top_nav ul > li a').each(function()
        {
            var el = $(this);
            var copy = $(this).parent().html();

            var linkWords = $(this).text().split(' ');
            var top = '';
            var bottom = '';
            for (var i = 0; i < linkWords.length; i++)
            {
                if ((i + 1) * 2 <= linkWords.length)
                    top += linkWords[i] + ' ';
                else
                    bottom += linkWords[i] + ' ';
            }
            var elText = el.text();
            var copyText = copy;

            $(this).parent().append('<span class="bottom">' + copy + '</span>');
            var bottom = $(this).parent().children('.bottom').children('a');
            var bottomText = bottom.text();
            bottom.text(bottomText.substr(top.trim().length).trim());

            el.text(elText.substr(0, top.trim().length).trim());
            el.wrap('<span class="top"></span>');
        });


        //    var navHighlight = $('#header_highlight');
        //    var navHighlightWidth = navHighlight.width();
        //    var selectedLi = $('.top_nav ul li.active');
        //    
        //   // var left = (selectedLi.position().left + (selectedLi.width() - navHighlightWidth) / 2) + 40 + 'px';
        //    $('.top_nav ul').bind("mouseleave", function()
        //    {
        //        if (selectedLi.length == 0)
        //        {
        //            navHighlight.stop().animate({ opacity: 0 });

        //            //            navHighlight.css({
        //            //                "visibility": "hidden"
        //            //            });
        //        }
        //        else
        //            selectedLi.trigger("mouseover");
        //    });
        //    $('.top_nav ul li:first').hover(
        //        function()
        //        {
        //            SlideTopNavHighlight(navHighlight, ($(this).position().left + ($(this).width() - navHighlightWidth) / 2) + 20);
        //        },
        //        function()
        //        {
        //            navHighlight.stop();
        //        }
        //    );
        //    $('.top_nav ul li:gt(0)').hover(
        //        function()
        //        {
        //            SlideTopNavHighlight(navHighlight, ($(this).position().left + ($(this).width() - navHighlightWidth) / 2) + 45);
        //        },
        //        function()
        //        {
        //            navHighlight.stop();
        //        }
        //    );
    }
    catch (err)
    {
    }
}

function SlideTopNavHighlight(navHighlight, left)
{
    try
    {
        if (navHighlight.css("opacity") == "0")
        {
            navHighlight.css({
                "left": left + 'px'
            });
            navHighlight.stop().animate({ opacity: 1 });
        }
        else
            navHighlight.stop().animate({ "left": left + 'px' }, { duration: "normal" }).animate({ opacity: 1 });
    }
    catch (err)
    {
    }
}

function RewriteHeadersForStyling(selector)
{
    try
    {
        // split the links in the header in half and wrap in appropriate styles
        $(selector).each(function()
        {
            if ($(this).children('br').length > 0)
            {
                var br = $(this).contents('br:eq(0)');
                var indexOfBr = $(this).contents().index(br);

                $(this).contents(':lt(' + indexOfBr + ')').wrapAll('<span class="top"></span>');
                $(this).contents(':gt(' + indexOfBr + ')').wrapAll('<span class="bottom"></span>');
                br.remove();
            }
            else if ($(this).children('bottom').length == 0)
            {
                $(this).wrapInner('<span class="bottom"></span>');
            }
        });
    }
    catch (err)
    {
    }
}

function AddGraphicQuotes()
{
    try
    {
        $('.quote').each(function()
        {
            var quotedHtml = $(this).html().trim();

            var firstLetter = quotedHtml.substr(0, 1);
            if (firstLetter == '"' || firstLetter == '“')
            {
                quotedHtml = quotedHtml.substring(1, quotedHtml.length);
            }
            quotedHtml = '<span class="open_quote">"</span>' + quotedHtml;

            var lastLetter = quotedHtml.substr(quotedHtml.length - 1, 1);
            if (lastLetter == '"' || lastLetter == '”')
            {
                quotedHtml = quotedHtml.substring(0, quotedHtml.length - 1);
            }

            $(this).html(quotedHtml.substring(0, quotedHtml.lastIndexOf(' ') + 1) + '<span class="nowrap">' + quotedHtml.substring(quotedHtml.lastIndexOf(' ') + 1) + '<span class="end_quote">"</span></span>');
        });
    }
    catch (err)
    {
    }
}

function AddGraphicDivCorners(element)
{
    try
    {
        element.prepend("<div class='gfx-tL'></div><div class='gfx-tR'></div><div class='gfx-bL'></div><div class='gfx-bR'></div>");
    }
    catch (err)
    {
    }
}

function AddGraphicDivBottom(element)
{
    try
    {
        element.append("<div class='gfx-b'></div>");
    }
    catch (err)
    {
    }
}

function ReserveSpaceForAbsoluteElements()
{
    try
    {
        $('.row').each(function()
        {
            if ($(this).find('.column_1').length > 1)
            {
                var links = $(this).find('.column_1 .content_holder .primary-link');
                links.css("margin-top", "10px");
            }
        });
    }
    catch (err)
    {
    }
}

function SetPrimaryLinksInContentToAbsoluteBottom()
{
    try
    {
        $('.row').each(function()
        {
            if ($(this).find('.column_1').length > 1)
            {
                $(this).find('.column_1 .content_holder .primary-link').each(function()
                {
                    $(this).css({
                        "width": $(this).width(),
                        "position": "absolute"
                    });
                });
            }
        });
    }
    catch (err)
    {
    }
}

function LimitChars(textid, limit, infodiv)
{
    try
    {
        var text = $(textid).val();
        var textlength = text.length;
        if (textlength > limit)
        {
            $(textid).val(text.substr(0, limit));
            return false;
        }
        else
        {
            $('#' + infodiv).html((limit - textlength) + ' characters left');

            return true;
        }
    }
    catch (err)
    {
    }
}

function CheckCookie(cookiename, ageCheckUrl, returnUrl)
{
    try
    {
        if ($.cookie(cookiename) == null)
        {
            if (document.referrer.indexOf('http://www.magners.com/') == 0 || document.referrer.indexOf('http://magners.com/') == 0 || document.domain.indexOf('localhost') == 0)
                $.cookie(cookiename, 'true', { path: '/' });
            // redirect to age check
            else
                window.location = ageCheckUrl + "?ReturnUrl=" + encodeURIComponent(returnUrl);
        }
    }
    catch (err)
    {
    }
}