﻿$j(function() {
    //MAIN NAV
    $j("div.navitem").hover(
		function() {
		    if (menuObj != null && menuObj.attr("id") != $j(this).attr("id")) {
		        removeHover();
		        menuObj = null;
		    } else if (menuObj != null) {
		        clearTimeout(timer);
		    }

		    if (!jQuery.support.cssFloat)
		        $j(this).find("div.popup").slideDown(200);
		    else
		        $j(this).find("div.popup").fadeIn(200);

		    $j(this).find("a.navlink").addClass("hover");
		},

		function() {
		    menuObj = $j(this);
		    timer = setTimeout("checkHover()", 100);
		});

    //BRAND DETAIL
    $j("div.menu-trigger").click(
        function() {
            $j("div.product-menu").animate({ top: '55px' }, 200);
        });
    $j("div.product-menu a.close").click(
        function() {
            $j("div.product-menu").animate({ top: '330px' }, 200);
        });

    //PRODUCT DETAIL
    $j("div.thumbnails img").click(function() { productDetailImageSwap($j(this)); });
    $j("#featurestab").find("img.radio").click(function() { productDetailRadioClick($j(this)); });
    $j("#featurestab").find("label").click(function() { productDetailRadioClick($j(this).prev()); });
    $j("#cancel").click(function() { $j("#alert").hide(); });

    if (typeof prices != 'undefined') {
        $j("#featurenote").show();
        var key = "";
        for (var i in prices) {
            key = i;
            break;
        }
        $j("#factsheetpopup").find("input[type=hidden]").val(key);
    }

    if ($j("div.productsummary").length != 0) {
        var startScrollingAt = $j("div.producttabs").position().top;
        var maxScrollingAt = $j("div.footer").position().top - 40;
        var boxHeight = $j("div.productsummary").height();
        var marginStart = parseInt($j("div.productsummary").css("margin-top"));
        var boxTop = $j("div.productsummary").position().top;

        $j(window).scroll(
            function() {
                var scrolltop = parseInt($j(document).scrollTop())
                var maxCheck = (boxTop + boxHeight + scrolltop + marginStart) - startScrollingAt;

                if (scrolltop > startScrollingAt) {
                    if (maxCheck < maxScrollingAt) {
                        $j("div.productsummary").css("margin-top", ((scrolltop + marginStart) - startScrollingAt) + "px");
                    }
                } else {
                    $j("div.productsummary").css("margin-top", marginStart + "px");
                }
            });
    }

    $j("div.tabs a").click(
        function() { tabSwap(this) }
        );

    $j("div.accordion").accordion({ autoHeight: false, collapsible: true });
    $j("div.accordion").accordion("activate", 2);
});

function tabSwap(tab) {
    $j("div.tabcontent, div.tabs a").removeClass("active");
    $j("#" + $j(tab).attr("rel")).addClass("active");
    $j(tab).addClass("active");
}

function productDetailImageSwap(thumbImg) {
    $j("#mainimg").attr("src", $j(thumbImg).attr("src").replace("w=40", "w=450"));
}

function productDetailRadioClick(radioBtn) {    
    var configKey = radioBtn.attr("value").split("|")[0];
    if (!radioBtn.hasClass("checked")) {
        evaluateKey(configKey, radioBtn);
    } else {
        var lastItem = "";
        for (var i in prices) {
            if (i == configKey) break;
            else lastItem = i;
        }    
        if (lastItem != "") evaluateKey(lastItem, radioBtn);
    }
}

function evaluateKey(configKey, radioBtn) {
    var group = radioBtn.attr("group");
    
    var id = radioBtn.attr("id");        
    var lastGroup = $j("#featurestab").find("img.radio:last").attr("group");        
    var requiredBtns = new Array();        
    var conflicts = new Array();
    
    //find the first button in each group with config key
    for (var i = 0; i <= lastGroup; i++) {
        if (i != group) {
            var btnsInGroup = $j("#featurestab").find("img.radio[group=" + i + "]");
            for(var j = 0; j < btnsInGroup.length; j++) {
                if ($j(btnsInGroup[j]).attr("value").indexOf(configKey) >= 0) {
                    requiredBtns.push($j(btnsInGroup[j]));
                    break;
                }
            }
        }
    }
    
    //find any conflicted buttons
    for(var i = 0; i < requiredBtns.length; i++) {
        if (!$j(requiredBtns[i]).hasClass("checked")) {
            var current = $j("img.checked[group = " + $j(requiredBtns[i]).attr("group") + "]");
            if (current.length != 0) {
                conflicts.push("From " + current.next().attr("alt") + " to " + $j(requiredBtns[i]).next().attr("alt"));
            } else {
                conflicts.push("Select " + $j(requiredBtns[i]).next().attr("alt"));
            }
        }
    }
          
    if (conflicts.length != 0) displayConflictPopup(radioBtn, conflicts, configKey);
    else checkByKey(configKey);
}

function displayConflictPopup(radioBtn, conflicts, configKey) {
      var pos = radioBtn.offset();              //offset of the radio button
      var bodyPos = $j("div.tabbody").offset(); //relative to the tab body;      
      
      $j("#alert #options").html("<li>" + conflicts.join("</li><li>") + "</li>");
      $j("#confirm").unbind("click");
      $j("#confirm").click( function() { checkByKey(configKey); });
      $j("#alert").css( { "left": ((pos.left - bodyPos.left) - 50) + "px", "top": ((pos.top - bodyPos.top) + 20) + "px" } );
      $j("#alert").show();
}

function checkByKey(configKey) {
    var lastGroup = $j("#featurestab").find("img.radio:last").attr("group");        
    for (var i = 0; i <= lastGroup; i++) {
        var btnsInGroup = $j("#featurestab").find("img.radio[group=" + i + "]");
        var checkedNdx = -1;
        for(var j = 0; j < btnsInGroup.length; j++) {
            if ($j(btnsInGroup[j]).attr("value").indexOf(configKey) >= 0) {
                addCheck($j(btnsInGroup[j]));
                checkedNdx = j;
            } else {
                removeCheck($j(btnsInGroup[j]));
            }
        }

        //set image
        if (btnsInGroup.length > 1) {
            if ($j(btnsInGroup[checkedNdx]).attr("relimg").length > 0) {
                $j("#img_" + i + " img").attr("src", $j(btnsInGroup[checkedNdx]).attr("relimg")).show();
            } else {
                $j("#img_" + i + " img").hide();
            }
        }
    }
    $j("#price").html(prices[configKey]);
    $j("#factsheetpopup").find("input[type=hidden]").val(configKey);    
    
    $j("#alert").hide();
    
    //SPECIAL BLOCK TO SWAP THE S&F INNERSPRING MAIN IMG
    if ($j("div.thumbnails img").length > 1) {
        if (configKey == "{132B7DEA-BB6C-4A95-8BF4-75E833158FD1}") {
            productDetailImageSwap($j("div.thumbnails img")[0]);
        } else if (configKey == "{4642A8BB-6C8D-4537-8CB9-8663A7757C9F}") {
            productDetailImageSwap($j("div.thumbnails img")[1]);
        }
    }
}

function addCheck(radioBtn) {
    if (radioBtn.attr("src").indexOf("-act") < 0) radioBtn.attr("src", radioBtn.attr("src").replace(".gif", "-act.gif")).addClass("checked");
}

function removeCheck(radioBtn) {
    if (radioBtn.attr("src").indexOf("-act") >= 0) radioBtn.attr("src", radioBtn.attr("src").replace("-act", "")).removeClass("checked");
}

//expands an expandable panel
// - expandable panel should have an id=panel_{number}
// - trigger element should have a class="expander" and rel={number}
function expand(id) { 
    var imgObj = $j("img.expander[rel='" + id + "']")
    if (!imgObj.hasClass("expanded")) {
        $j("#panel_" + id).slideDown(100);
        imgObj.attr("src", "/common/images/btn-minus.png").addClass("expanded");              
    }
}

//contracts an expandable panel
// - expandable panel should have an id=panel_{number}
// - trigger element should have a class="expander" and rel={number}
function contract(id) {
    var imgObj = $j("img.expander[rel='" + id + "']")
    $j("#panel_" + id).slideUp(100);
    imgObj.attr("src", "/common/images/btn-plus.png").removeClass("expanded");   
}

//FUNCTIONS FOR MAIN NAV ROLLOVERS
var menuObj = null;
var timer;
function checkHover() {
    if (menuObj) removeHover();
}

function removeHover() {
    menuObj.find("a.navlink").removeClass("hover");
    menuObj.find("div.popup").queue(
        function() {
            $j(this).hide();
            $j(this).dequeue();
        });
    }
