var activeProduct, newProduct, numproducts;

function resetSlidey() {
    if ($(".scroll").html() != null) {
        if ($(".scroll").scrollLeft() > 0) {
            $(".scroll").scrollLeft(0);
        }
    }
    if ($(".scroll .wrapper").html() != null) {
        if ($(".scroll .wrapper").scrollLeft() > 0) {
            $(".scroll .wrapper").scrollLeft(0);
        }
    }
}

/*--------------------------- Product Pop ----------------------------*/

function prodPop(defaultParam, thisProduct) {

    if (thisProduct) {
    } else {
        thisProduct = $(this);
    }

    // id is in the form "productboxpop_[product]"
    newProduct = thisProduct.children(".container").attr("id").substring(5);

    // Only kick off billboard slidey if selecting a non-active product;
    if (newProduct == activeProduct)
        return true;

    var productboxpop, productcontent;

    numproducts = thisProduct.parent("div").hasClass("four") && 4 || thisProduct.parent("div").hasClass("three") && 3 || thisProduct.parent("div").hasClass("two") && 2 || 5;

    if ($("#sign_in_box .hdr_open").css("display") == "none") {
        $("#sign_in_box .hdr_close").click();
    }

    // Reset active productboxpop display and functionality
    if (activeProduct) {
        productboxpop = $("#prod_" + activeProduct).parent("div");

        productboxpop.removeClass("prodActive");
        productboxpop.children("div.shadow").hide();
        productboxpop.find(".autobtn").css("margin-bottom", "5px");
        productboxpop.find(".autobtn-wide").css("margin-bottom", "5px");
        productboxpop.find(".fs-smaller").addClass("fs-smallest").removeClass("fs-smaller");
        productboxpop.find(".fs-small").addClass("fs-smaller").removeClass("fs-small");
        productboxpop.find(".fs-normal").addClass("fs-small").removeClass("fs-normal");
        productboxpop.find(".fs-larger").addClass("fs-large").removeClass("fs-larger");
        productboxpop.find(".fs-largest").addClass("fs-larger").removeClass("fs-largest");
        productboxpop.find(".lh-normal").addClass("lh-small").removeClass("lh-normal");
        productboxpop.find(".lh-large").addClass("lh-normal").removeClass("lh-large");
    }

    productboxpop = thisProduct;
    prodActivate(productboxpop, newProduct);

}
function prodUnPop() {

};

function prodActivate(productboxpopId, newProduct) {

    productboxpop = $(productboxpopId);
    activeProduct = newProduct;

    productboxpop.addClass("prodActive");

    if (productboxpop.hasClass("initial")) {
        productboxpop.removeClass("initial");

        // Assign dynamic height to shadows
        $(".productbox .shadow .ml, .productbox .shadow .mr").height($(productboxpop).height() - 7);
        $(".productbox .shadow .tc, .productbox .shadow .bc").width($(productboxpop).width() - 18);

        // find position of the product within the billboard and adjust 
        // (no slide on initial load)
        var container = $(".billboard");
        $.each(container.find(".section"), function(i, n) {
            $(n).attr("rel", i);
        });
        var width = container.width();
        var z = $("#bb_" + newProduct).attr("rel");
        var cnt = -(width * z);
        if (isNaN(cnt)) cnt = 0;
        if (cnt != 0) $(".billboard .content").css("left", cnt);
    } else {
        $(".billboard").slideTo("#bb_" + newProduct);
    }

    numproducts = productboxpop.parent("div").hasClass("four") && 4 || productboxpop.parent("div").hasClass("three") && 3 || productboxpop.parent("div").hasClass("two") && 2 || 5;

    productboxpop.children("div.shadow").show();
    productboxpop.find(".autobtn").css("margin-bottom", "6px");
    productboxpop.find(".autobtn-wide").css("margin-bottom", "6px");
    productboxpop.find(".lh-normal").addClass("lh-large").removeClass("lh-normal");
    productboxpop.find(".lh-small").addClass("lh-normal").removeClass("lh-small");
    productboxpop.find(".fs-larger").addClass("fs-largest").removeClass("fs-larger");
    productboxpop.find(".fs-large").addClass("fs-larger").removeClass("fs-large");
    productboxpop.find(".fs-small").addClass("fs-normal").removeClass("fs-small");
    productboxpop.find(".fs-smaller").addClass("fs-small").removeClass("fs-smaller");
    productboxpop.find(".fs-smallest").addClass("fs-smaller").removeClass("fs-smallest");

    return true;
}

/*-------------------------- Image Preload -----------------------------*/

jQuery.preloadImages = function() {
    alert('sdfsdf');

    var prefix = "";
    //only use akamai for http
    if (location.protocol == 'http:')
        prefix = "http://images.turbotax.intuit.com";

    for (var i = 0; i < arguments.length; i++) {
        jQuery("<img>").attr("src", prefix + arguments[i]);
    }
}

/*-------------------------- Flippy ----------------------------*/

jQuery.fn.setFlippy = function(body_height) {
    var container = jQuery(this);
    container.find("li").addClass("flip");
    container.find("li").not(".active").children(".body").css("height", "0px").css("overflow", "hidden").hide();
    container.find("li.active").children(".body").css("height", body_height);
    container.find(".title").hoverIntent({
        sensitivity: 25,
        interval: 100,
        over: function() {
            var target = $(this).parent();
            var target_parent = target.parent();
            if (!target.hasClass("active")) {
                if (target_parent.find(".active_old").html() != null) {
                    target_parent.find(".active").children(".body").stop();
                    target_parent.find(".active_old").children(".body").height(0).hide();
                    target_parent.find(".active").children(".body").height(body_height);
                    target_parent.find(".active_old").removeClass("active_old");
                }
                target_parent.find(".active").addClass("active_old").removeClass("active");
                target.addClass("active");
                target.children(".body").animate({ height: body_height }, {
                    step: function(now, fx) {
                        target_parent.find(".active_old").children(".body").height(body_height - (now));
                    },
                    duration: 300,
                    complete: function() {
                        target_parent.find(".active_old").children(".body").hide();
                        target_parent.find(".active_old").removeClass("active_old");
                    }
                });
            }
        },
        timeout: 100,
        out: function() { }
    });
}


/*-------------------------- Slidey ----------------------------*/

jQuery.fn.slideTo = function(target_id, settings) {
    settings = jQuery.extend({
        easeTime: 400
    }, settings);
    var container = jQuery(this);
    $.each(container.find(".section"), function(i, n) {
        $(n).attr("rel", i);
    });
    var width = container.width();
    var z = $(target_id).attr("rel");
    var cnt = -(width * z);
    if (isNaN(cnt)) cnt = 0;

    container.find(".itab_content").animate({ left: cnt }, {
        duration: 600,
        easing: "easeInOutQuint",
        complete: function() {
            var left = $(this).css("left");
            var distance = left.split("px");
            if (distance[0] > -500) $(this).css("left", 0);
        }
    });
}

/*--------------------------- Poppy ----------------------------*/

jQuery.fn.popIt = function(settings) {
    settings = jQuery.extend({
        overlayBgColor: '#FFF',
        overlayOpacity: '0.80',
        imgLoading: 'images/loading_blue.gif',
        imgBtnClose: 'images/icn_close.png',
        iFrameWidth: 600,
        iFrameHeight: 450
    }, settings);

    function init() {

        // Loading...
        var obj = $(this);
        var pClass = $(this).hasClass("taxCalc") && "taxCalc" || $(this).hasClass("helpMeChoose") && "helpMeChoose" || $(this).hasClass("screenshotzoom") && "screenShotZoom" || " ";

        var url = $(this).attr("href");
        var baseURL = url.indexOf(";") !== -1 && url.substr(0, url.indexOf(";")) || url.indexOf("?") !== -1 && url.substr(0, url.indexOf("?")) || url;

        var queryString = url.replace(/^[^\?]+\??/, '');
        var params = parseQuery(queryString);

        var pWidth = pClass == "screenShotZoom" && 670 || pClass == "taxCalc" && 642 || pClass == "helpMeChoose" && 787 || !params['width'] && settings.iFrameWidth || params['width'];
        var pHeight = pClass == "screenShotZoom" && 394 || pClass == "taxCalc" && 584 || pClass == "helpMeChoose" && 600 || !params['height'] && settings.iFrameHeight || params['height'];

        $('body').append('<div id="blur-overlay"></div><div id="poppyBox"><div class="container ' + pClass + '"><div id="poppyLoading"><strong>Loading...</strong><img src="' + settings.imgLoading + '" border=0></div></div><a href="javascript:;" id="poppyClose" class="poppClose" title="Close"><img src="images/icn_close.png" class="png" border=0 width=28 height=28 /></a><img src="images/poppy_fade_top.png" class="fadeTop png" border=0 width=25 height=10><img src="images/poppy_fade_btm.png" class="fadeBtm png" border=0 width=25 height=20></div>');

        $("#poppyBox").append('<div class="shadow" id="poppyShadow"><table cellspacing=0 cellpadding=0><tr><td><img src="images/poppy_shadow_tl.png" class="tl png" border=0 width=17 height=17></td><td><img src="images/poppy_shadow_tc.png" class="tc png" border=0 width=17 height=17></td><td><img src="images/poppy_shadow_tr.png" class="tr png" border=0 width=17 height=17></td></tr><tr><td><img src="images/poppy_shadow_ml.png" class="ml png" border=0 width=17 height=17></td><td style="background-color:#FFF"><img src="images/poppy_shadow_mc.png" class="mc png" border=0 width=17 height=17></td><td><img src="images/poppy_shadow_mr.png" class="mr png" border=0 width=17 height=17></td></tr><tr><td><img src="images/poppy_shadow_bl.png" class="bl png" border=0 width=17 height=17></td><td><img src="images/poppy_shadow_bc.png" class="bc png" border=0 width=17 height=17></td><td><img src="images/poppy_shadow_br.png" class="br png" border=0 width=17 height=17></td></tr></table></div>');

        $("#poppyShadow .tc, #poppyShadow .bc, #poppyShadow .mc").width($("#poppyLoading").width());
        $("#poppyShadow .ml, #poppyShadow .mr, #poppyShadow .mc").height($("#poppyLoading").height());

        $('embed, object, select').css({ 'visibility': 'hidden' });

        if ($.browser.firefox && $.browser.mac)
            $("#blur-overlay").addClass("overlayMacFFBGHack"); // MacFF Only

        posOverlay();
        $('#blur-overlay').css({
            backgroundColor: settings.overlayBgColor,
            opacity: settings.overlayOpacity
        }).fadeIn("fast", function() {
            $("#poppyShadow").show();
            $("#poppyLoading").fadeIn("fast", function() {

                // Content Insert
                if (pClass == "screenShotZoom") {
                    $("#poppyBox .container").append("<img src='" + baseURL + "' id='poppyImg' name='poppyimg" + Math.round(Math.random() * 1000) + "' onload='poppyIframeLoaded($(this))' width='" + pWidth + "' height='" + pHeight + "' class='" + pClass + "' >" + "<div class='imgCaption'>" + obj.prev("div").html() + "</div>");
                } else {
                    $("#poppyBox .container").append("<iframe frameborder='0' hspace='0' src='" + baseURL + "?" + queryString + "' id='poppyIframeContent' name='iframeContent" + Math.round(Math.random() * 1000) + "' onload='poppyIframeLoaded($(this))' style='width:" + pWidth + "px;height:" + pHeight + "px;' class='" + pClass + "' > </iframe>");
                }

                // Window Resize Adjust
                $(window).resize(function() {
                    $('#blur-overlay').hide();
                    posOverlay();
                    $('#blur-overlay').show();
                    posBox();
                });

                // Exit		
                document.onkeyup = function(e) {
                    var keycode = e == null ? event.keyCode : e.which;
                    if (keycode == 27) end(); // Escape Key
                };
                //$("#blur-overlay, #poppyLoading, #poppyClose, #poppyImg").click(function() { end(); });
                $("#poppyClose, #poppyImg").click(function() { end(); });


            });
        });
        posBox();


        return false;
    }

    function end() {
        $("#poppyBox, #poppyLoading, #poppyShadow").remove();
        $("#blur-overlay").fadeOut("fast", function() { $(this).remove(); });
        $('embed, object, select').css({ 'visibility': 'visible' });
        $(".poppy, .thickbox").popIt();
    }

    function posOverlay() {
        var arrPageSizes = getPageSize();
        $('#blur-overlay').css({
            width: arrPageSizes[0],
            height: arrPageSizes[1]
        });
    }

    function posBox() {
        var arrPageSizes = getPageSize();
        var arrayPageScroll = getPageScroll();
        var fromLeft = ((arrPageSizes[2] - $('#poppyBox').width()) / 2) + arrayPageScroll[0];
        var fromTop = ((arrPageSizes[3] - $('#poppyBox').height()) / 2) + arrayPageScroll[1];
        $('#poppyBox').css({
            left: fromLeft < 0 ? 0 : fromLeft,
            top: fromTop < 0 ? 10 : fromTop
        }).show();
    }

    function parseQuery(query) {
        var Params = {};
        if (!query) { return Params; } // return empty object
        var Pairs = query.split(/[;&]/);
        for (var i = 0; i < Pairs.length; i++) {
            var KeyVal = Pairs[i].split('=');
            if (!KeyVal || KeyVal.length != 2) { continue; }
            var key = unescape(KeyVal[0]);
            var val = unescape(KeyVal[1]);
            val = val.replace(/\+/g, ' ');
            Params[key] = val;
        }
        return Params;
    }

    return this.unbind('click').click(init);
}



function poppyIframeLoaded(obj) {

    var objWidth = obj.hasClass("taxCalc") && $(obj).width() - 19 || obj.hasClass("helpMeChoose") && $(obj).width() - 22 || $(obj).width() - 6;
    var objHeight = obj.hasClass("screenShotZoom") && $(obj).height() + 75 || obj.hasClass("taxCalc") && $(obj).height() - 19 || obj.hasClass("helpMeChoose") && $(obj).height() - 28 || $(obj).height() + 10;

    var arrPageSizes = getPageSize();
    var arrayPageScroll = getPageScroll();
    var fromLeft = ((arrPageSizes[2] - objWidth) / 2) + arrayPageScroll[0];
    var fromTop = ((arrPageSizes[3] - objHeight) / 2) + arrayPageScroll[1];
    fromLeft = fromLeft < 0 ? 0 : fromLeft;
    fromTop = fromTop < 0 ? 0 : fromTop;

    $("#poppyLoading").fadeOut("fast", function() {
        $("#poppyLoading").remove();
        $("#poppyBox, #poppyBox .container").width(objWidth).height(objHeight);

        $('#poppyBox').animate({ top: fromTop, left: fromLeft }, 500);
        $("#poppyShadow .mc").animate({ height: objHeight + "px", width: objWidth + "px" }, 500, function() {
            if (obj.attr("id") == "poppyImg")
                $("#poppyImg, #poppyBox .imgCaption").css({ display: "block" });
            else
                $("#poppyIframeContent").css({ display: "block" });

            $("#poppyClose").css({ top: "-10px", left: objWidth + "px" }).show();

            if (obj.hasClass("taxCalc") || obj.hasClass("helpMeChoose")) {
                $("#poppyShadow").hide();
            } else if (!(obj.attr("id") == "poppyImg")) {

                $("#poppyBox .fadeTop").css({ top: "18px", left: "10px", width: objWidth - 15 + "px" }).show();
                $("#poppyBox .fadeBtm").css({ top: objHeight - 12 + "px", left: "10px", width: objWidth - 15 + "px" }).show();
            }

        });
        $("#poppyShadow .ml, #poppyShadow .mr").animate({ height: objHeight + "px" }, 500);
        $("#poppyShadow .tc, #poppyShadow .bc").animate({ width: objWidth + "px" }, 500);
    });

}
/*--------------------------- Page Sizes ----------------------------*/

function getPageSize() {
    var xScroll = (window.innerHeight && window.scrollMaxY) && window.innerWidth + window.scrollMaxX || (document.body.scrollHeight > document.body.offsetHeight) && document.body.scrollWidth || document.body.offsetWidth;
    var yScroll = (window.innerHeight && window.scrollMaxY) && window.innerHeight + window.scrollMaxY || (document.body.scrollHeight > document.body.offsetHeight) && document.body.scrollHeight || document.body.offsetHeight;

    var windowWidth = self.innerHeight && (document.documentElement.clientWidth ? document.documentElement.clientWidth : self.innerWidth) || (document.documentElement && document.documentElement.clientHeight) && document.documentElement.clientWidth || document.body && document.body.clientWidth;
    var windowHeight = self.innerHeight && self.innerHeight || (document.documentElement && document.documentElement.clientHeight) && document.documentElement.clientHeight || document.body && document.body.clientHeight;

    // for small pages with total height less then height of the viewport
    var pageHeight = yScroll < windowHeight ? windowHeight : yScroll;

    // for small pages with total width less then width of the viewport
    var pageWidth = xScroll > windowWidth ? xScroll : windowWidth;

    var arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight);
    return arrayPageSize;
}

function getPageScroll() {
    var xScroll = self.pageYOffset && self.pageXOffset || (document.documentElement && document.documentElement.scrollTop) && document.documentElement.scrollLeft || document.body.scrollLeft;
    var yScroll = self.pageYOffset && self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) && document.documentElement.scrollTop || document.body.scrollTop;
    var arrayPageScroll = new Array(xScroll, yScroll);
    return arrayPageScroll;
}
