// when the DOM is ready...
$(document).ready(function () {
	$.scrollTo({top:'0px'}, 0);
	var exclude_js_links = ":not('.append_js')";
	var js_links_array = Array(".navigation",".left_nav",".bottommostFooter",".learnMoreContainer",".titleLink");
	var js_links_string = "";
	
	for(var i = 0; i < js_links_array.length; i++) {
		js_links_string += js_links_array[i] + exclude_js_links;
		if(i < js_links_array.length-1)
			js_links_string += ",";
	}
	
	$(js_links_string).find("a").each(function() {
		js_links($(this));
	});
	
	$(".append_js").find("a").each(function() {
		append_js($(this));
	});
	
	var content_to_ignore = "";

    var $panels = $('#slider .scrollContainer > div');
    var $container = $('#slider .scrollContainer');

    // if false, we'll float all the panels left and fix the width 
    // of the container
    var horizontal = true;

    // float the panels left if we're going horizontal
    if (horizontal) {
        $panels.css({
            'float' : 'left',
            'position' : 'relative' // IE fix to ensure overflow is hidden
        });

        // calculate a new width for the container (so it holds all panels)
        $container.css('width', $panels[0].offsetWidth * $panels.length);
    }

    // collect the scroll object, at the same time apply the hidden overflow
    // to remove the default scrollbars that will appear
    var $scroll = $('#slider .scroll').css('overflow', 'hidden');


    // handle nav selection
    function selectNav() {

        $(this)
            .parents('ul:first')
                .find('a')
                    .removeClass('active')
                .end()
            .end()
            .addClass('active');
	
		// change the left and right arrow tooltips
		var prev = $('.left_nav').find('a[id$="' + $(this).attr("id") + '"]').parent().prev().find("a .title").get(0);
		var next = $('.left_nav').find('a[id$="' + $(this).attr("id") + '"]').parent().next().find("a .title").get(0);
		prev = (prev != null) ? $.trim($(prev).text()) : "";
		next = (next != null) ? $.trim($(next).text()) : "";
	
		$('.leftArrow').data("title", prev);
		$('.rightArrow').data("title", next);
		
		var lefthref = $('.left_nav').find('a[id$="' + $(this).attr("id") + '"]').parent().prev().find("a").attr("href");
		var righthref = $('.left_nav').find('a[id$="' + $(this).attr("id") + '"]').parent().next().find("a").attr("href");
		
		lefthref = (lefthref != undefined) ? lefthref : "#index";
		righthref = (righthref != undefined) ? righthref : "#index";
		
		$('.leftArrow').attr("href", lefthref);
		$('.rightArrow').attr("href", righthref);
		
	
		$(".subsection").text($(this).text());

    }

    $('.left_nav').find('a').click(selectNav);
	
    // go find the navigation link that has this target and select the nav
    function trigger(data) {
		if(!$(data).is(content_to_ignore)) { 
        	var el = $('.left_nav').find('a[href$="' + data.id + '"]').get(0);

			//pageTracker._trackPageview(window.location.pathname + "#" + data.id);
			
        	selectNav.call(el);
		}
    }

    if (window.location.hash) {
        //trigger({ id : window.location.hash.substr(1) });
		$('.left_nav').find('a[href$="' + window.location.hash.substr(1) + '"]').click(selectNav);
    } else {
        $('ul.left_nav a:first').click();
    }

    // offset is used to move to *exactly* the right place, since I'm using
    // padding on my example, I need to subtract the amount of padding to
    // the offset.  Try removing this to get a good idea of the effect
    var offset = parseInt((horizontal ? 
        $container.css('paddingTop') : 
        $container.css('paddingLeft')) 
        || 0) * -1;


    var scrollOptions = {
        target: $scroll, // the element that has the overflow

        // can be a selector which will be relative to the target
        items: $panels,

        navigation: '.navigation a',

        // selectors are NOT relative to document, i.e. make sure they're unique
        prev: '.leftArrow', 
        next: '.rightArrow',

        // allow the scroll effect to run both directions
        axis: 'xy',

        onAfter: trigger, // our final callback

        offset: offset,

        // duration of the sliding effect
        duration: 500,

        // easing - can be used with the easing plugin: 
        // http://gsgd.co.uk/sandbox/jquery/easing/
        easing: 'swing',
		
		hash: true,
		
		ignore: content_to_ignore
    };

    // apply serialScroll to the slider - we chose this plugin because it 
    // supports// the indexed next and previous scroll along with hooking 
    // in to our navigation.
    $('#slider').serialScroll(scrollOptions);

    // now apply localScroll to hook any other arbitrary links to trigger 
    // the effect
    $.localScroll(scrollOptions);

    // finally, if the URL has a hash, move the slider in to position, 
    // setting the duration to 1 because I don't want it to scroll in the
    // very first page load.  We don't always need this, but it ensures
    // the positioning is absolutely spot on when the pages loads.
    scrollOptions.duration = 1;
    $.localScroll.hash(scrollOptions);


	$('.leftArrow').click(function(e) { return false; });
	$('.rightArrow').click(function(e) { return false; });

});

$(window).load(function() { 
	//$(((window.location.hash)?window.location.hash:"#index")).height($(((window.location.hash)?window.location.hash:"#index")+".panel").height()+10);
	$($(".scroll")).height($(((window.location.hash)?window.location.hash:"#index")+".panel").height()+10);
});

function js_links(el) {
	var items = el.attr("href").split("/");
			
	if(items[4]) {
		el.attr("href", items[0]+"//"+items[2]+"/"+items[3]+_get_js+"#"+items[4]);
	}
}

function append_js(el) {
	if(_get_js)
		el.attr("href", el.attr("href")+"?js=1");
}