var slideTimer, menuTimer, hideMenu;
var pause = false;
var currentSlideMain = 0;
var currentSlide = new Array;
var slideInterval = new Array;

var ie9 = (navigator.userAgent.indexOf("MSIE 9.") != -1) ? true : false;

function switchSlidesMain(pos){

    slideCount = ($("#slides a").length - 1);
    currentSlideMain = pos;
    if (currentSlideMain < 0 ) { currentSlideMain = slideCount; }
    else if (currentSlideMain > slideCount) { currentSlideMain = 0; }
    $("#slides a.visible").fadeOut(2000).removeClass("visible");
    $("#slides a").eq(currentSlideMain).fadeIn(2000).addClass("visible");
    $("#caption-title a.main-link, #caption-title span").html($("#slides a.visible").attr("title"));
    
    var video = $("#slides a.visible").attr("vid");
    var learn_more = $("#slides a.visible").attr("href");
    $("#slide-caption a").attr("href", learn_more);

    if(video == "") {
        $("#slide-caption .launch_video").css("display", "none");
        $("#caption-learn-more").css("padding-left", "0px");
        $("#slide-caption a.launch_learn_more").css("margin-left", "37px");

    } else {
        $("#slide-caption a.launch_video").attr("href", video);
        $("#slide-caption a.launch_learn_more").attr("href", learn_more);
        $("#slide-caption .launch_video").css("display", "");
        $("#slide-caption a.launch_learn_more").css("margin-left", "0px");
        if(ie9)
        	$("#slide-caption a.launch_video").css("padding-left", "2px");

        $("#caption-learn-more").css("padding-left", "0px");
    }
    
    var right = (((895 - $("#caption-title span").width())/2)-133);
    if(right < 40)
    	right = 40;
    $("#caption-learn-more").css("right", right +"px");

    $("#slide-caption .launch_video").css("visibility", "visible");
    $("#slide-caption a.launch_learn_more").css("visibility", "visible");
   
    if (!pause) {
        slideTimer = setTimeout(function(){ switchSlidesMain(currentSlideMain+1); }, 6000);
    }
}

function switchSlidesMini(box){
    if($(box).length == 1) {return;}
    if (!currentSlide[box]) { currentSlide[box] = 0; }
    $(box+".visible").fadeOut(1000).removeClass("visible");
    $(box).eq(currentSlide[box]).fadeIn(1000).addClass("visible");
    slideCount = ($(box).length-2);
    if ( currentSlide[box] > slideCount) { currentSlide[box] = 0; }
    else { currentSlide[box] = currentSlide[box] + 1; }
}

$(document).ready(function () {
    $(".primary-nav-submenu").hide();
    $("#slides a").hide();
    $("#prev-slide").click(function(){
        pause = true;
        clearTimeout(slideTimer);
        switchSlidesMain(currentSlideMain-1);
    });
    $("#next-slide").click(function(){
        pause = true;
        clearTimeout(slideTimer);
        switchSlidesMain(currentSlideMain+1);
    });
    switchSlidesMain(currentSlideMain);

    $("#next-slide, #prev-slide, input, .prev_and_next").hover(
      function(){ $(this).addClass("hover"); },
      function(){ $(this).removeClass("hover"); }
    );

    $("#box2-slides a:gt(0), #box3-slides a:gt(0), #box4-slides a:gt(0)").hide();
    slideInterval[0] = setInterval(function(){ switchSlidesMini("#box2-slides a"); }, 5000);
    slideInterval[1] = setInterval(function(){ switchSlidesMini("#box3-slides a"); }, 6000);
    slideInterval[2] = setInterval(function(){ switchSlidesMini("#box4-slides a"); }, 5500);

    $(".product_category_thumbnail img").click(function(){
        // if category is oem solutions, there are no subcategories or products, we just go to the oem solutions page
        if ($(this).attr('rel') == 0) { // oem solutions id is 0
            $("#pl-label").hide();
            $("label[for=subcategory-select]").hide();
            $("#subcategory_select_container").hide();
            $("label[for=model-number]").hide();
            $("#product_select_container").hide();
            $("#subscription-broadcast-instructions").hide();
            $("#oem-solutions-instructions").show();
        } else if ($(this).attr('rel') == 4) { // subscription broadcast solutions id is 4
            $("#pl-label").hide();
            $("label[for=subcategory-select]").hide();
            $("#subcategory_select_container").hide();
            $("label[for=model-number]").hide();
            $("#product_select_container").hide();
            $("#oem-solutions-instructions").hide();
            $("#subscription-broadcast-instructions").show();
        } else {
            $("#oem-solutions-instructions").hide();
            $("#subscription-broadcast-instructions").hide();
            $("#pl-label").show();
            $("label[for=subcategory-select]").show();
            $("#subcategory_select_container").show();
            $("label[for=model-number]").show();
            $("#product_select_container").show();
        }

        $("input#category_id").val($(this).attr('rel'));
        if (!$(this).hasClass("selected")) {
            $(".product_category_thumbnail img.selected").fadeTo(0,".7");
            $(".product_category_thumbnail img").removeClass("selected");
            $(this).addClass("selected");
            loadSubcategories();
        }
    });

    prepareSubcategorySelect();

    $(".product_category_thumbnail img").hover(function(){
        $(this).css("top","-113px");
        $(this).fadeTo(0,"1");},
    function(){
        $(this).css("top","0");
        if(!$(this).hasClass("selected")) {
            $(this).fadeTo(0,".7");
        }
    });

    $(".product_category_thumbnail img").fadeTo("1",".7");
    $(".product_category_thumbnail:gt(2)").hide();
    $(".product_category_thumbnail:eq(0)").children("img").addClass("selected").fadeTo(0,"1");

    $("#pcv-next").click(function(){
        go_next();
    });
    $("#pcv-prev").click(function(){
        go_prev();
    });
    $("#product_locator_next").click(function(){
       var productCategories = $(".product_category_thumbnail");
       var firstDisplayedIndex = getFirstDisplayedIndex(productCategories);
    });
    updateViewportTitles();
    loadSubcategories();
    $(".page-border").height($("#page-wrapper").height()-20);

    $("#product-locator").submit(function(){
        // if oem solutions is selected, go to its page
        var product_category_thumbnails = $(".product_category_thumbnail img");
        for (var i = 0; i < product_category_thumbnails.length; i++) {
            if ($(product_category_thumbnails[i]).hasClass('selected')) {
                if ($(product_category_thumbnails[i]).attr('rel') == 0) {
                    var url = '/solutions/oem/index.php';
                    $(location).attr('href',url);
                    return false;
                } else if ($(product_category_thumbnails[i]).attr('rel') == 4) { // subscription broadcast
                    var url = '/products/subscription-broadcast.php';
                    $(location).attr('href',url);
                    return false;
                }
            }
        }

        var url = $("#model-number").val();
        if (url.length) {
            $(location).attr('href',url);
        }
        return false;
    });

    $("#q").blur(function(){
        if ($("#q").val() == '') {
            $("#q").val('Search: Enter Keyword or Model Number');
        }
    });
});

var wrapProductCategoryRotation = true;
number_of_categories_to_scroll = 1;
number_of_categories_to_show = 3;
visibility_toggle_speed = 'fast';


function prepareSubcategorySelect()
{
    $("#subcategory-select").change(function(){
        loadProducts();
    });
}

function loadSubcategories()
{
    var category_id = $("#product_category_viewport img.selected").attr('rel');
    var url = "/ajax/product_locator.php?action=get_subcategories&action_format=select&category_id=" + category_id;
    //alert(url); // debug
    $("#subcategory_select_container").load(url, null, function(){prepareSubcategorySelect();loadProducts();});
    //alert($("#product_category_viewport img.selected").attr('alt'));
    $("#pl-label").html($("#product_category_viewport img.selected").attr('alt'));
}

function loadProducts()
{
    var category_id = $("#product_category_viewport img.selected").attr('rel');
    var subcategory_id = $("select#subcategory-select").val();
    var url = "/ajax/product_locator.php?action=get_products&action_format=select&category_id=" + category_id + "&subcategory_id=" + subcategory_id;
    $("#product_select_container").load(url, '', function(){
        if (subcategory_id == '') {
            $("#model-number").attr('disabled', 'disabled');
        } else {
            $("#model-number").removeAttr('disabled');
        }
    });
}

function go_next()
{
    // get element to hide
    var productCategories = $(".product_category_thumbnail");
    var elementToHide = productCategories[getFirstDisplayedIndex(productCategories)];

    // get element to show
    var elementToShow = productCategories[getLastDisplayedIndex(productCategories) + 1];

    // if no element to show and wrap rotation enabled, put first element after last in DOM
    if (!elementToShow && wrapProductCategoryRotation) {
        var firstElement = productCategories[0];
        var lastElement = productCategories[productCategories.length - 1];
        $(firstElement).detach();
        $(firstElement).insertAfter(lastElement);
        elementToShow = firstElement;
    }

    // show & hide
    if (elementToHide && elementToShow) {
        $(elementToHide).hide(visibility_toggle_speed, function(){
            updateViewportTitles();
            $(elementToShow).show(visibility_toggle_speed, function(){
                $(this).children("img").show();
                updateViewportTitles();
            });
        });
    }
}

function go_prev()
{
    // get element to hide
    var productCategories = $(".product_category_thumbnail");
    var elementToHide = productCategories[getLastDisplayedIndex(productCategories)];

    // get element to show
    var elementToShow = productCategories[getFirstDisplayedIndex(productCategories) - 1];

    // if no element to show and wrap rotation enabled, put first element after last in DOM
    if (!elementToShow && wrapProductCategoryRotation) {
        var firstElement = productCategories[0];
        var lastElement = productCategories[productCategories.length - 1];
        $(lastElement).detach();
        $(lastElement).insertBefore(firstElement);
        elementToShow = lastElement;
    }

    // show & hide
    if (elementToHide && elementToShow) {
        $(elementToHide).hide(visibility_toggle_speed, function(){
            updateViewportTitles();
            $(elementToShow).show(visibility_toggle_speed, function(){
                updateViewportTitles();
            });
        });
    }

}

function getFirstDisplayedIndex(elementsArray)
{
    var currentElement = null;
    var elementCount = elementsArray.length;
    for (var i = 0; i < elementCount; i++) {
        currentElement = elementsArray[i];
        if (currentElement.style.display != 'none') {
            return i;
        }
    }
}

function getLastDisplayedIndex(elementsArray)
{
    var currentElement = null;
    var elementCount = elementsArray.length;
    for (var i = elementCount - 1; i >= 0; i--) {
        currentElement = elementsArray[i];
        if (currentElement.style.display != 'none') {
            return i;
        }
    }
}

function updateViewportTitles(){
    $(".pcv-title").eq(0).html($(".product_category_thumbnail img:visible").eq(0).attr("alt"));
    $(".pcv-title").eq(1).html($(".product_category_thumbnail img:visible").eq(1).attr("alt"));
    $(".pcv-title").eq(2).html($(".product_category_thumbnail img:visible").eq(2).attr("alt"));
}

