﻿$.fn.centerInClient = function(options) {
    /// <summary>Centers the selected items in the browser window. Takes into account scroll position.
    /// Ideally the selected set should only match a single element.
    /// </summary>    
    /// <param name="fn" type="Function">Optional function called when centering is complete. Passed DOM element as parameter</param>    
    /// <param name="forceAbsolute" type="Boolean">if true forces the element to be removed from the document flow 
    ///  and attached to the body element to ensure proper absolute positioning. 
    /// Be aware that this may cause ID hierachy for CSS styles to be affected.
    /// </param>
    /// <returns type="jQuery" />
    var opt = { forceAbsolute: false,
                container: window,    // selector of element to center in
                completeHandler: null
              };
    $.extend(opt, options);
   
    return this.each(function(i) {
        var el = $(this);
        var jWin = $(opt.container);
        var isWin = opt.container == window;

        // force to the top of document to ENSURE that 
        // document absolute positioning is available
        if (opt.forceAbsolute) {
            if (isWin)
                el.remove().appendTo("body");
            else
                el.remove().appendTo(jWin.get(0));
        }

        // have to make absolute
        el.css("position", "absolute");

        // height is off a bit so fudge it
        var heightFudge = isWin ? 2.0 : 1.8;

        var x = (isWin ? jWin.width() : jWin.outerWidth()) / 2 - el.outerWidth() / 2;
        var y = (isWin ? jWin.height() : jWin.outerHeight()) / heightFudge - el.outerHeight() / 2;

        el.css("left", x + jWin.scrollLeft());
        el.css("top", y + jWin.scrollTop());

        // if specified make callback and pass element
        if (opt.completeHandler)
            opt.completeHandler(this);
    });
}


function showOverlay()
{
    $("#faq_overlay").hide();
    $("#page_overlay").show();
    $("#tellafriend_overlay").hide();

    $("#overlay").show();
    $("#overlayContainer").show().centerInClient();
}

function closeOverlay()
{
    $("#overlay").hide();
    $("#overlayContainer").hide();
}

function showTellAFriend()
{
    $("#faq_overlay").hide();
    $("#page_overlay").hide();
    $("#tellafriend_overlay").show();

    $("#overlay").show();
    $("#overlayContainer").show();
}

function updateBillingAddressVis()
{
    if ($('#ctl00_cphContent_billingSameAsMailing:checked').val())
        $('#ctl00_cphContent_billingaddress').hide();
    else
        $('#ctl00_cphContent_billingaddress').show();
}

function updateCharsLeft(el)
{
    var numleft = 500 - parseInt($(el).val().length);

    if (numleft >= 0)
    {
        $("#chars_left").text(numleft);
        return true;
    }

    return false;
}

var _current_quote = 0;
function incQuote()
{
    var prev_quote = _current_quote;
    _current_quote = (_current_quote + 1) % 6;

    $('#quote' + (prev_quote + 1).toString()).fadeOut('normal');
    $('#quote' + (_current_quote + 1).toString()).fadeIn('normal');
    $('#curquotenum').html((_current_quote + 1).toString());
}

function decQuote()
{
    var prev_quote = _current_quote;
    _current_quote = (_current_quote + 2) % 6;

    $('#quote' + (prev_quote + 1).toString()).fadeOut('normal');
    $('#quote' + (_current_quote + 1).toString()).fadeIn('normal');
    $('#curquotenum').html((_current_quote + 1).toString());
}

function SwapImg(el, img)
{
    el.attr('src', img);
}
