﻿//*********************** Rollover Manager Control ***************************
function RolloverManager(){
    AddHandler(window, "load", CreateDelegate(this, this.RegisterElements));
}

RolloverManager.prototype.MouseOverHandler = function(e) {
    e = e || window.event;
    var element = e.srcElement || e.target,
        rolloverElememt = this.FindTopNode(element, 'itc-rollover-element'),
        tempClassName = null;

    if (rolloverElememt) {
        tempClassName = rolloverElememt.className
        tempClassName = tempClassName.replace(/itc-rollover-element/, 'itc-rollover-active');
        rolloverElememt.className = tempClassName;
        this.ToggleChildDisplayState(rolloverElememt, 'block');
    }
}

RolloverManager.prototype.MouseOutHandler = function(e) {
    e = e || window.event;
    var element = e.srcElement || e.target,
        rolloverElememt = this.FindTopNode(element, 'itc-rollover-active'),
        tempClassName = null;

    if (rolloverElememt) {
        tempClassName = rolloverElememt.className
        tempClassName = tempClassName.replace(/itc-rollover-active/, 'itc-rollover-element')
        rolloverElememt.className = tempClassName;
        this.ToggleChildDisplayState(rolloverElememt, 'none');
    }
}

RolloverManager.prototype.RegisterElements = function() {
    var pageElements = document.getElementsByTagName('*');
    for (index = 0; index < pageElements.length; index++) {
        var pageElement = pageElements[index];
        if (pageElement.className.indexOf('itc-rollover-element') > -1) {
            AddHandler(pageElement, 'mouseover', CreateDelegate(this, this.MouseOverHandler));
            AddHandler(pageElement, 'mouseout', CreateDelegate(this, this.MouseOutHandler));
        }
    }
};

RolloverManager.prototype.ToggleChildDisplayState = function(element, displayState) {
    var childElements = element.getElementsByTagName('*');
    for (index = 0; index < childElements.length; index++) {
        var childElement = childElements[index];
        if (childElement.className.indexOf('itc-rollover-hidden-content') > -1) {
            childElement.style.display = displayState;
        }
    }
}

RolloverManager.prototype.FindTopNode = function(element, elementClass) {
    if (element.className && element.className.indexOf(elementClass) > -1) {
        return element;
    }
    else {
        if (element.parentNode) {
            return this.FindTopNode(element.parentNode, elementClass);
        } else {
            return null;
        }
    }
}


//*********************** Instantiate Rollover Manager ***************************
var rolloverManager = new RolloverManager();

