var nsf = {}; // global namespace

// search field fancification
nsf.sInput = $('#search');
nsf.sLabel = nsf.sInput.next('label');
nsf.sLabelHide = function () {
    (nsf.sInput.val().length !== 0) ? nsf.sLabel.css('display', 'none') : nsf.sLabel.css('display', 'block');
};
nsf.sInput.bind('blur', nsf.sLabelHide);
    nsf.sLabelHide();

// FAQ (private)
(function () {
    var faq = document.getElementById('faq'), start = setTimeout(function () { var l = $('h3', faq).length; while (l--) {$('h3', faq).eq(l).click()}}, 1000);
    if (faq !== null) {
        $(faq).find('p').wrap('<div />'); // brittle, relies on answers only having one paragraph
        $('div', faq).each(function () {
            var that = $(this);
            that.data('height', that.height()).hide().prev().bind('click', function() {
                var cur = $('.current', faq);
                if (!$(this).hasClass('current')) {
                    if (cur.length > 0) {
                        cur.next().animate({height: 0},300).end().removeClass('current');
                    }
                    that.animate({height: that.data('height')}, 300).prev().addClass('current');
                }
            });
        });
    }
}());    

// HOME PAGE GALLERY
nsf.gal = $('#gallery') || undefined;
nsf.pager = $('#pager') || undefined;

nsf.hide = function (parent, over, clss) { // hiding function that ignores events while animating
if (!over.data('running')) {
    over.data('running', true).animate({ opacity: 0 }, 333, function () {
            parent.removeClass(clss);
            if (!$.support.opacity) {
                this.style.removeAttribute('filter');
            }
            $(this).css({ display: 'none', visibility: 'hidden' }).data('running', false);
        });
    }
};
nsf.show = function (parent, over, clss) { // showing function that ignores events while animating
    if (!over.data('running')) {
        parent.addClass(clss);
        over.data('running', true).css({ display: 'block', visibility: 'visible' }).animate({ opacity: 1 }, 333, function () {
            
            if (!$.support.opacity) {
                this.style.removeAttribute('filter');
            }
            $(this).data('running', false);
        });
    }
};

nsf.showHide = function (parent, over, clss) {
    if ($('.' + clss).length > 0) {
        nsf.hide($('.' + clss), $('.' + clss).children().slice(1));
    }
    nsf.show(parent, over, clss);
};


if (nsf.gal !== undefined) {
    $('div[id^=dot] > a').siblings().css('opacity', 0);
    $('#gallery > li.current').siblings().css('opacity', 0);
    nsf.pager.children('li').eq(0).addClass('current');

    nsf.gal.bind('click', function (e) {
        var tar = $(e.target).closest('a'), parent = tar.parent('div'), over = tar.siblings(), clss = 'active';
        if (tar.attr('href') === '#') {
            e.preventDefault();
        }
        if  (nsf_isNode(e.target, 'a') || nsf_isNode(e.target, 'img')) {
            (parent.hasClass(clss)) ? nsf.hide(parent, over, clss) : nsf.showHide(parent, over, clss);
        }
    });
    
    nsf.pager.bind('click', function(e) {
        var tar = $(e.target), parent, toHide, toShow;
        if (tar.attr('href') === '#') {
            e.preventDefault();
            parent = tar.parent('li');
            toHide = $('#gallery').children('.current');
            toShow = $('#gallery').children('li').eq(parent.attr('id').slice(-1));
            if (!parent.hasClass('current')) {
                nsf.pager.children('li.current').removeClass('current');
                parent.addClass('current');
                nsf.hide(toHide, toHide, 'current');
                nsf.show(toShow, toShow, 'current');
            }
            
        }
    });
}


// miscellaneous functions
$('a[rel=external], a[href$=pdf]').attr('target', '_blank'); // beloved of marketers everywhere
var nsf_isNode = function(node, test) {
	return (node.nodeName.toLowerCase() === test);
};

if ($('#jsmove').length > 0) {
	$('#jsmove').insertAfter($('.products')).css('display', 'block');
}
