Navigation = function(topNavigationId, subNavigationId) {
    var self = this;

    /**
     * Top nav id
     * 
     * @var string
     */
    this.topNavigationId = topNavigationId;

    /**
     * Sub nav id
     * 
     * @var string
     */
    this.subNavigationId = subNavigationId;

    /**
     * Init
     * 
     * @return void
     */ 
    this.init = function() {
        $.preloadImages(
            '/img/navigation/sub/letter-from-the-founder.gif',
            '/img/navigation/sub/our-mission.gif',
            '/img/navigation/sub/who-we-are.gif',
            '/img/navigation/sub/contact-us.gif',
            '/img/navigation/sub/partners.gif',
            '/img/navigation/sub/partner-with-us.gif'
        );
        $('#header').bind('mouseover', this.setNavigation);
        $('#content').bind('mouseover', this.setNavigation);
        $('#topNavigation ul li a').bind('mouseover', this.toggleTopNavigation);
        $('#subNavigation ul li a').bind('mouseover', this.toggleSubNavigation);
        this.setNavigation(null, null, null);
    }

    /**
     * Set navigation
     * 
     * @param  string
     * @param  string
     * @return void
     */
    this.setNavigation = function(event, topNavigationId, subNavigationId) {
        if (!topNavigationId) {
            topNavigationId = self.topNavigationId;
        }

        if (!subNavigationId) {
            subNavigationId = self.subNavigationId;
        }

        $('#topNavigation ul li a').removeClass('selected');

        var element = $('#' + topNavigationId);
        element.addClass('selected');

        if (element.hasClass('hasSub')) {
            $('#subNavigation').removeClass('hidden');
            $('#subNavigation ul').addClass('hidden');
            $('#' + topNavigationId.replace('topNavigationLink', 'subNavigation')).removeClass('hidden');
        } else {
            $('#subNavigation').addClass('hidden');
            $('#subNavigation ul').addClass('hidden');
        }

        $('#subNavigation ul li a').removeClass('selected');
        $('#' + subNavigationId).addClass('selected');
    };

    /**
     * Toggle top navigation
     * 
     * @param  string
     * @param  string
     * @return void
     */
    this.toggleTopNavigation = function(event) {
        self.setNavigation(event, event.target.id, null);
    };

    /**
     * Toggle sub navigation
     * 
     * @param  string
     * @param  string
     * @return void
     */
    this.toggleSubNavigation = function(event) {
        $('#subNavigation ul li a').removeClass('selected');
        $('#' + event.target.id).addClass('selected');
    };

    // init
    this.init();
}
