﻿/*
Title:      Main Javascript
Author:     Claude Beauchemin, claude.beauchemin@nurun.com
Updated:    July 8 2009

Content:	
Base namespace setup
Init all pages
Main Flipbook Navigation

*/

// ------[ Base namespace setup ]------------------------------------------------- //

/**
* Base namespace setup
*/
window.ECATALOG = window.ECATALOG || {};

ECATALOG = {
    globals: {
        labels: {}
    },
    pages: {
        all: {},
        catalogsNavigation: {}
    },
    widgets: {}
}

/**
* Init for all pages
*/
ECATALOG.pages.all.init = function(e,parameter) {
    //Call the Main Catalogs Navigation
    ECATALOG.pages.catalogsNavigation.init();
    //Evinrude don't have the Traking
    if (parameter.Brand != "Evinrude") {
        ECATALOG.pages.flipbooktracking.init(parameter);
    }
}

// ------[ Main Catalogs Navigation ]------------------------------------------------- //
ECATALOG.pages.flipbooktracking = {
    container: null,
    pageNumberContainer: null,
    currentZoomState: true,
    pageTracker: null,
    culture: "",
    pageName: "",
    brand: "",
    downloadLinkId: "pdfLink",
    printLink: "fbPrintButton",
    zoomLink: "fbZoomButton",

    init: function(parameter) {
        // Find the UL Navigation
        this.container = document.getElementById("flash-content");
        this.pageNumberContainer = document.getElementById("fbCurrentPages");
        this.culture = parameter.Culture;
        this.pageName = parameter.PageName;
        this.brand = parameter.Brand;

        if (this.container) {
            YAHOO.util.Event.on(this.container, 'dblclick', ECATALOG.pages.flipbooktracking.Zoom);
        }
        if (flippingBook) {
            flippingBook.onPageRefresh.subscribe(ECATALOG.pages.flipbooktracking.PageChange);
        }

        YAHOO.util.Event.on(this.downloadLinkId, 'click', ECATALOG.pages.flipbooktracking.Download);
        YAHOO.util.Event.on(this.printLink, 'click', ECATALOG.pages.flipbooktracking.Print);
        YAHOO.util.Event.on(this.zoomLink, 'click', ECATALOG.pages.flipbooktracking.Zoom);

        try {
            ECATALOG.pages.flipbooktracking.pageTracker = _gat._getTracker(parameter.GATrackerNumer);
        }
        catch (err) { }
    },

    Zoom: function() {
        ECATALOG.pages.flipbooktracking.currentZoomState = !ECATALOG.pages.flipbooktracking.currentZoomState
        // Find the UL Navigation
        if (ECATALOG.pages.flipbooktracking.currentZoomState) {
            ECATALOG.pages.flipbooktracking.pageTracker._trackEvent(ECATALOG.pages.flipbooktracking.culture + '/' + ECATALOG.pages.flipbooktracking.brand, 'Zoom', 'Page ' + ECATALOG.pages.flipbooktracking.pageNumberContainer.innerHTML);
        }
        
    },

    PageChange: function() {
        ECATALOG.pages.flipbooktracking.currentZoomState = false;
        ECATALOG.pages.flipbooktracking.pageTracker._trackPageview('/' + ECATALOG.pages.flipbooktracking.culture + '/' + ECATALOG.pages.flipbooktracking.pageName + '/Page ' + ECATALOG.pages.flipbooktracking.pageNumberContainer.innerHTML);
    },

    Download: function() {
        ECATALOG.pages.flipbooktracking.pageTracker._trackEvent(ECATALOG.pages.flipbooktracking.culture + '/' + ECATALOG.pages.flipbooktracking.brand, 'Download', 'Catalog');

    },

    Print: function() {
        ECATALOG.pages.flipbooktracking.pageTracker._trackEvent(ECATALOG.pages.flipbooktracking.culture + '/' + ECATALOG.pages.flipbooktracking.brand, 'Print', 'Page ' + ECATALOG.pages.flipbooktracking.pageNumberContainer.innerHTML);
    }
}

// ------[ Main Catalogs Navigation ]------------------------------------------------- //
ECATALOG.pages.catalogsNavigation = {
    containerId: null,
    liElement: null,
    liAncestor: "",

    /*
    *
    *  Initialize only 3 level (maximum)
    *
    */
    init: function() {
        // Find the UL Navigation
        this.containerId = document.getElementById('main-nav-catalogs');
        if (this.containerId) {
            /*
            *  For Level-2 Nav Only
            *  Find all LI group
            */
            this.liElement = this.containerId.getElementsByTagName("li");
            for (var i = 0; i < this.liElement.length; i++) {
                this.ulElement = this.liElement[i].getElementsByTagName("ul");
                for (var y = 0; y < this.ulElement.length; y++) {
                    YAHOO.util.Dom.addClass(this.liElement[i], "unselected");
                }
            }
            /*
            *  For all Level Nav
            *  Find CALLER Button (A) and add Click Event
            */
            this.aElement = this.containerId.getElementsByTagName("a");
            for (var i = 0; i < this.aElement.length; i++) {
                YAHOO.util.Event.on(this.aElement[i], 'click', ECATALOG.pages.catalogsNavigation.LinkPageEvents, { liContent: this.liElement, caller: this.aElement[i], aContent: this.aElement });
            }

        }
    },

    LinkPageEvents: function(e, params) {
        e = e || event;
        /*
        *  Control the current selected element
        *  Array replaceClass  ( el , oldClassName , newClassName )
        */
        if (YAHOO.util.Dom.hasClass(params.caller, "selected") != true) YAHOO.util.Dom.addClass(params.caller, "selected");
        /*
        *  Reset all "A" element
        *      If it's the same current element, do nothing
        */
        for (var i = 0; i < params.aContent.length; i++) {
            if (params.caller != params.aContent[i]) {
                if (YAHOO.util.Dom.hasClass(params.aContent[i], 'selected') == true) {
                    YAHOO.util.Dom.removeClass(params.aContent[i], "selected");
                }
            }
        }
        /*
        * For Level-2 Nav Only
        *      Close all "LI"
        *          Keep OPEN the Parent Element ("LI" Group) if
        *          we are inside this Parent Element
        */
        this.liAncestor = YAHOO.util.Dom.getAncestorByTagName(params.caller, "li");
        if (this.liAncestor) {
            for (var i = 0; i < params.liContent.length; i++) {
                var isInside = YAHOO.util.Dom.getAncestorByClassName(params.caller, "selected");
                if (this.liAncestor != params.liContent[i] && !isInside) {
                    if (YAHOO.util.Dom.hasClass(params.liContent[i], 'selected') == true) {
                        YAHOO.util.Dom.replaceClass(params.liContent[i], "selected", "unselected");
                    }
                }
            }
        }
        /*
        *  Close the Level-3 if is opened when you click on others links
        */
        this.liAncestor2 = YAHOO.util.Dom.getAncestorByTagName(this.liAncestor, "li");
        if (this.liAncestor2) {
            this.liElementLevel2 = this.liAncestor2.getElementsByTagName("li");
            for (var i = 0; i < this.liElementLevel2.length; i++) {
                this.ulElementLevel3 = this.liElementLevel2[i].getElementsByTagName("ul");
                for (var y = 0; y < this.ulElementLevel3.length; y++) {
                    YAHOO.util.Dom.replaceClass(this.liElementLevel2[i], "selected", "unselected");
                }
            }
        }
        /*
        *  For Level-2 Nav Only
        *     Control the close/open "LI" Group
        */
        if (this.liAncestor) {
            if (YAHOO.util.Dom.hasClass(this.liAncestor, 'unselected') == true) {
                YAHOO.util.Dom.replaceClass(this.liAncestor, "unselected", "selected");
            } else {
                if (YAHOO.util.Dom.hasClass(this.liAncestor, 'selected') == true) {
                    YAHOO.util.Dom.replaceClass(this.liAncestor, "selected", "unselected");
                }
            }
        }
    }

};

function NavigateToPage(PageNumber) {
    flippingBook.getFlippingBookReference().flipGotoPage(PageNumber)
}
