var animate_navi = function(){};
    
$(document).ready(function(){
    // Not the most elegant, but it seems to work.
    var isiPad = (navigator.userAgent.match(/iPad/i) != null);
    var isiPhone = (navigator.userAgent.match(/iPhone/i) != null);
    var isiPod = (navigator.userAgent.match(/iPod/i) != null);

    //populate subnav details    
    if ( !isiPad && !isiPhone && !isiPod ) {
        var current = $("#global_subnav_bar a.current").attr('name');
        $("#global_subnav_bar").load("/navigation/subnav.html",{current:current},init_subnav);
    }

    $(".edit_pos").mouseover(function(){
        $(this).next().addClass("edit_highlight");
    }).mouseout(function(){
        $(this).next().removeClass("edit_highlight");
    });

    /* Site Select */
    $('.site_chooser').hover(function() {
        $(this).find(".site_select").animate({opacity: 'toggle', height:'toggle'}, 200);
        $("#site_choose").css("color","black");
    },function(){
        $(this).find(".site_select").css('display','none');
        $("#site_choose").css("color","white");
    });

    $('.support_chooser').hover(function() {
        $(this).find(".support_select").animate({opacity: 'toggle', height:'toggle'}, 200);
        $("#support_choose").css("color","black");
    },function(){
        $(this).find(".support_select").css('display','none');
        $("#support_choose").css("color","white");
    });
    
    $('.account_chooser').hover(function() {
        $(this).find(".support_select").animate({opacity: 'toggle', height:'toggle'}, 200);
        $("#account_choose").css("color","black");
    },function(){
        $(this).find(".support_select").css('display','none');
        $("#account_choose").css("color","white");
    });

    /* FEEDBACK */
    $("#feedback_button").click(function(){
            $("#feedback label[name=urldisplay]").text( window.location.href );
            $("#feedback").animate({ 
                left: parseInt( $("#feedback").css('left'),10) == 0 ? 
                    -$("#feedback").outerWidth() : 0
            });
    });
    $("#feedback_button").mouseover(function(){
            $("#feedback label[name=urldisplay]").text( window.location.href );
            $("#feedback").animate({ 
                left: parseInt( $("#feedback").css('left'),10) == 0 ? 
                    -$("#feedback").outerWidth() : 0
            });
    });

    $("#feedback .dialog_close").click(function(){
            $("#feedback").animate({ 
                left: parseInt( $("#feedback").css('left'),10) == 0 ?  -($("#feedback").outerWidth()+10) : 0,
            });
    });

    $("#feedback input[name=submit]").click(function(){
            $("#feedback input[name=url]").val( window.location.href);
            $.post("/ajax/feedback", $("#feedback form").serialize(),function(data) {
                if ( data.match(/Thank/) ) {
                   $("#feedback .dialog_close").trigger('click');
                   $("#feedback form")[0].reset(); 
                }
            });
            return false;
    });

    /* MODAL LOGIN */
    $("#login_dialog").dialog({
        bgiframe: true,
        modal:    true,
        autoOpen: false,
        resizable: false,
        dialogClass: 'sans-title',
        position: 'center'
    });
    $(".login_button-modal").click(function(){
        $("#login_dialog").dialog('open');
        return false;
    });

    $('.login-modal').click(function() {
        $("#login_dialog").dialog('open');
        return false;
    });

	$('#global_top_bar .log_in').click(function() {
		$("#login_dialog").dialog('open');
		return false;
	})

    $(".dialog_close").click(function() {
        $(this).parent().dialog('close');
    });

    //generic rollover class
	$("img.rollover").mouseover(function(){roll_over($(this))}).mouseout(function(){roll_out($(this))});

	//preload rollover images
	$("img.rollover").each(function() {
		jQuery("<img>").attr("src", image_over($(this).attr('src'))); 
	});

    //layout-bot3000
    balance_height();
    var layout_targets = ["div.grid_4 .htmlbody p", "div.grid_4 .htmlbody h2", "#sub-features p", ".row_1",".row_2",".row_3",".row_4",".row_5",".row_6",".row_links"];
    for (var i in layout_targets) {
        var layout_str = layout_targets[i];
        if ($(layout_str).length) {
            var max_height = 0;
            $(layout_str).each(function() {
                var cur_height = $(this).height();
                if (cur_height > max_height) {
                    max_height = cur_height;
                }
            });

            if (max_height) {
                $(layout_str).each(function() {
                    $(this).height(max_height);
                });
            }
        }
    }

    $('.hoverable > li a, .hoverable > li img').hover(
        function(){
            $(this).find('img').each(function() {
                $(this).attr("src", image_over($(this).attr('src'))); 
            });
        },
        function(){
            $(this).find('img').each(function() {
                $(this).attr("src", image_out($(this).attr('src'))); 
            });
        }
    );

    /*should make this into a general scroll anchor*/
    $("#featurelinks a, .browse_artists a, .browse_cats a").click(function() {
        var link = $(this).attr('href');
        var offset = $(link).offset();
        $("html,body").animate({scrollTop:offset.top},500,'swing');
        window.location.hash = link;
        return false;
    });

    var navi_scrolling = 0;
    var navi_processing = 0;
    if ($('.navi.floaty').length>0) {
        var position = 'relative';
        var lower_padding = 30;

        var nav = $('.navi.floaty')
        var floaty_top = nav.offset().top;
        var floaty_height = nav.height();
        var init_top = parseInt(nav.css('top'))||0;

        var container = nav.parent().css('display','inline-block');
        var container_top = container.offset().top;
        var container_height = container.height();

        var window_height = $(window).height();
        var scroll_pos = 0;

        $(window).scroll(function() {
            //re-calc container height on change
            container_height = container.height();

            if( $(this).scrollTop() > floaty_top ) {
                position = 'fixed';

                var top = container_top + container_height - $(this).scrollTop() - floaty_height - lower_padding - init_top;
                top = (top>0)?0:top; 
            }
            else {
                position = 'relative';
                top = init_top;
            }

            $('.floaty').css({position: position, top: top+'px'});

            navi_scrolling = 1;
        });

        //activate to turn on scroll tracking
        //setInterval("animate_navi()",100);

        var init_count = 0;
        animate_navi = function() {
            if (init_count <= 5) {
                //re-init after content load
                container_height = container.height();

                nav.find('.blink').each(function(){
                    var target = $(this).attr('href');
                    var target_top = $(target).offset().top;
                    var target_height = $(target).height();
                    var target_neighbor = ($(this).parent().prev().length)?$(this).parent().prev().children('a:first'):undefined;
                    var exposed = 0;

                    $(this).data('target',{name:target,top:target_top,height:target_height,exposed:exposed,neighbor:target_neighbor});
                });

                init_count++;
            }

            //init monitor for changing active items in nav
            if (navi_scrolling && !navi_processing) {
                navi_processing = 1;

                var window_pos = $(window).scrollTop();
                var top = init_top;
                
                nav.find('.blink').each(function() {
                    var target = $(this).data('target');
                    var exposed = target.exposed;

                    //check if it's below the top of the screen and above the bottom
                    if ((window_pos <= target.top) && (window_pos + window_height >= target.top + target.height)) {
                        if (target.neighbor !== undefined) {
                            if (!$(target.neighbor).data('target').exposed && exposed) {
                                nav_target = nav.find("a[href="+target.name+"]").parent('li'); 
                                navi_blink(nav_target);
                            }
                        }
                        else {
                            nav_target = nav.find("a[href="+target.name+"]").parent('li'); 
                            navi_blink(nav_target);
                        }
                        $(this).data('target').exposed = 1;
                    }
                    else {
                        if (target.neighbor !== undefined && exposed && !$(target.neighbor).data('target').exposed) {
                            if (window_pos + window_height <= target.top + target.height) {
                                navi_blink($(target.neighbor).data('target').name);
                            }
                        }
                        $(this).data('target').exposed = 0;
                    }
                });
                
                navi_processing = 0;
                navi_scrolling = 0;
            }
        }
    }

    $(".navi.blinky li").click(function(){
        var current = $(this);

        navi_blink(current);

        var target = $(this).find('a:first').attr('href');
        $("html,body").animate({scrollTop:$(target).offset().top},500,'swing');
        return false;
    });

    $("li.anchor, div.anchor").click(function() {
        var anchor = $(this).find("a:first");

        if(anchor.attr('href') !== '') {
            window.location = anchor.attr('href');
        }
    });

    $("li.anchor, div.anchor").hover(function() {
        $(this).find(".title").each(function() {
            $(this).addClass('hover');
        })
    }, function() {
        $(this).find(".title").each(function() {
            $(this).removeClass('hover');
        })
    });

    $(".section_links li").hover(function() {
        var anchor = $(this).find("a:first");
        anchor.addClass('hover');

        $(this).click(function() {
            anchor.click();
        });
    },
    function() {
        var anchor = $(this).find("a:first");
        anchor.removeClass('hover');
    });

    $(".product_models > li").hover(function(){$(this).find("img").addClass("active")},function(){$(this).find("img").removeClass("active")});

    $("#globalemailcapture .submit").live("click", function() {
            $("#globalemailcapture").hide();
            $("#globalemailcapture").after('<img style="margin-top:5px; border: 0px" src=/images/loading.gif>');

            $.ajax('/ajax/emailcapture',{
                data: $("#globalemailcapture").serialize(),
                dataType: 'json',
                success: function(data) {
                    if (data.success) {
                        $("#globalemailcaptureresult").html("<h5>"+data.message+"</h5>");
                    }
                    else {
                        $("#globalemailcaptureresult").html("<h5>"+data.message+"</h5>");
                    }
                    $("#globalemailcaptureresult").show();
                },
            });

            return false;
        });
    });

/*rollover*/
function image_over(src) {
	var over_string = '_over';
	return src.replace(/(_r[0-9]+)?(\.[a-z]+)$/, over_string+'$1$2');
}

function image_out(src) {
	var over_string = '_over';
	return src.replace(RegExp(over_string), ''); 
}

function roll_over(image) {
	image.attr('src',image_over(image.attr('src')));
}

function roll_out(image) {
	image.attr('src',image_out(image.attr('src')));
}

/*subnav behavior*/
function init_subnav() {        
    $("#nav_submenu > li").hover(function() {
        //$(this).find('.global_subnav_detail').css('display','block');
        //$(this).find('.global_subnav_detail').show(200,'linear');
        $(this).find('.global_subnav_detail').animate({opacity:'toggle'},200);
        $(this).find('a:first').addClass('active');
    }, function() {
        //$(this).find('.global_subnav_detail').css('display','none');
        $(this).find('.global_subnav_detail').animate({opacity:'toggle'},200);
        //$(this).find('.global_subnav_detail').hide(10);
        //$(this).find('.global_subnav_detail').animate({height:'toggle',opacity:'toggle'},300);
        $(this).find('a:first').removeClass('active');
    });
}

/*adjust background for interactive nav*/
function navi_blink(cur_item) {
    var padding = 3;
    var offset = $(cur_item).offset().top - $(cur_item).parent().offset().top+padding;

    $(cur_item).parent().animate({backgroundPositionY:offset+'px'},200, 'swing', function() {
        $(cur_item).addClass('active').siblings().removeClass('active');
        $(cur_item).parent().css('background-position','left '+offset+'px');
    }); 
}

//generalize the balance height function
function balance_height() {
    var layout_prefix = "l6_set_height";
    $("[class*='"+layout_prefix+"']").each(function() {
        var obj_class = $(this).attr('class');
        var max_height = 0;

        //split current object class string on spaces
        var keys = obj_class.split(' ');

        //for each key, process only items that have class matching layout_prefix
        for (i in keys) {
            var key = keys[i];

            if (!$(this).data(layout_prefix) && /l6_set_height\-.*/.test(key)) {
                $('.'+key).each(function() {
                    var cur_height = $(this).height();
                    if (cur_height > max_height) {
                        max_height = cur_height;
                    }

                    //non-visible items will get a 0 height, unless that changes
                    //then they'll get processed normally on first load
                    $(this).data('l6_set_height',cur_height);
                });

                if (max_height) {
                    $('.'+key).each(function() {
                        $(this).height(max_height);
                    });
                }
            }
        }
    });
}

