﻿// Parameters for dwAnimationFooter
var _dwEffect = "slideOut";         // Dissolves effect: "slideOut" or "fadeOut"
var _dwTimeToSlide = 1000.0;        // SlideIn/Out Time in milliSeconds
var _dwShowDelayTime = 5;           // Show footer after in Seconds
var _dwHideDelayTime = 60;          // Hide footer after in Seconds

var  _dwDIV, _dwDIVHeight,_dwInput;
var _dwFadeTimeLeft;
var _dwSlideInTimeLeft, _dwSlideOutTimeLeft;
var _dwTimerHide, _dwTimerShow;
var _dwAnimationTick = 33;
var _dwFocus, _dwClicked;
var _dwTimeToFade = 1000.0;         // FadeOut Time in milliSeconds

function dwAnimateFooter(divID, inputID, Height, AnimationOutEffect, TimeToSlideInMSecs, ShowDelayInSeconds, HideDelayInSeconds) {
    if (((_dwDIV = document.getElementById(divID)) == null) || ((_dwInput = document.getElementById(inputID)) == null)) {
        return false;
    }
    else {
        _dwDIVHeight = Height;
        if (AnimationOutEffect) _dwEffect = AnimationOutEffect;
        if (TimeToSlideInMSecs) _dwTimeToSlide = TimeToSlideInMSecs;
        if (ShowDelayInSeconds) _dwShowDelayTime = ShowDelayInSeconds;
        if (HideDelayInSeconds) _dwHideDelayTime = HideDelayInSeconds; 

        if (!dwGetSession('dwFooterSession')) {
            dwHideFooter();
            dwShowFooterAnimated(_dwShowDelayTime);
            dwHideFooterAnimated(_dwHideDelayTime);
        } else {
            dwHideFooter();
        }
        return true;
    }
}

function dwShowFooterAnimated(delay) {
    _dwTimerShowID = setTimeout("dwShowFooterAfterXSeconds()", delay * 1000); 
}

function dwHideFooterAnimated(delay) {
    _dwTimerHideID = setTimeout("dwHideFooterAfterXSeconds()", delay * 1000);
}

// Event handlers
function addEventHandler(elem, eventType, handler) {
    if (elem.addEventListener) elem.addEventListener(eventType, handler, false);
    else if (elem.attachEvent) elem.attachEvent('on' + eventType, handler);
}

function removeEventHandler(elem, eventType, handler) {
    if (elem.removeEventListener) elem.removeEventListener(eventType, handler, false);
    else if (elem.adetachEvent) elem.detachEvent('on' + eventType, handler);
}

function dwOnFocusHandler() { _dwFocus = true; clearTimeout(_dwTimerHideID); }
function dwOnBlurHandler() {  _dwFocus = false; dwHideFooterAnimated(_dwHideDelayTime); }
function dwOnMouseOverHandler() {  clearTimeout(_dwTimerHideID); }
function dwOnMouseOutHandler() { _dwClicked = false; dwHideFooterAnimated(_dwHideDelayTime); }
function dwOnMouseClickHandler() {  _dwClicked = true; clearTimeout(_dwTimerHideID); }

// Motion control
function dwShowFooterAfterXSeconds() {
    _dwFocus = false;
    _dwClicked = false;
    _dwDIV.style.visibility = 'visible';
    _dwSlideInTimeLeft = _dwTimeToSlide;
    setTimeout("dwSlideIn(" + new Date().getTime() + ")", _dwAnimationTick);
    addEventHandler(_dwDIV, "mouseover", dwOnMouseOverHandler);
    addEventHandler(_dwDIV, "mouseout", dwOnMouseOutHandler);
    addEventHandler(_dwDIV, "mousedown", dwOnMouseClickHandler);
    addEventHandler(_dwInput, "focus", dwOnFocusHandler);
    addEventHandler(_dwInput, "blur", dwOnBlurHandler);
}

function dwHideFooterAfterXSeconds() {
    if (!_dwFocus && !_dwClicked) {
        if (_dwEffect.toLowerCase() == "fadeout") {
            _dwFadeTimeLeft = _dwTimeToFade;
            setTimeout("dwFadeOut(" + new Date().getTime() + ")", _dwAnimationTick);
        }
        else {
            _dwSlideOutTimeLeft = _dwTimeToSlide;
            setTimeout("dwSlideOut(" + new Date().getTime() + ")", _dwAnimationTick);
        }
    }
}

function dwHideFooter() {
    _dwDIV.style.top = _dwDIVHeight + "px";
}

function dwShowFooter() {
    _dwDIV.style.top = "0px";
}

// FooterAnimation
function dwSlideIn(lastTick) {
    var curTick = new Date().getTime();
    var elapsedTicks = curTick - lastTick;

    if (_dwSlideInTimeLeft <= elapsedTicks) {
        _dwDIV.style.top = "0px";
        dwSetSession("dwFooterSession");
    } 
    else {
        _dwSlideInTimeLeft -= elapsedTicks;
        _dwDIV.style.top = ((_dwSlideInTimeLeft / _dwTimeToSlide) * _dwDIVHeight) + "px";
        setTimeout("dwSlideIn(" + curTick + ")", _dwAnimationTick);
    }
}

function dwSlideOut(lastTick) {
    var curTick = new Date().getTime();
    var elapsedTicks = curTick - lastTick;

    if (_dwSlideOutTimeLeft <= elapsedTicks) {
        _dwDIV.style.top = _dwDIVHeight + "px";
        _dwDIV.style.visibility = 'hidden';
    }
    else {
        _dwSlideOutTimeLeft -= elapsedTicks;
        _dwDIV.style.top = _dwDIVHeight - ((_dwSlideOutTimeLeft / _dwTimeToSlide) * _dwDIVHeight) + "px";
        setTimeout("dwSlideOut(" + curTick + ")", _dwAnimationTick);
    }
}

function dwFadeOut(lastTick) {
    var curTick = new Date().getTime();
    var elapsedTicks = curTick - lastTick;

    if (_dwFadeTimeLeft <= elapsedTicks) {
        _dwDIV.style.opacity = '0';
        _dwDIV.style.filter = 'alpha(opacity = 0)';
        _dwDIV.style.visibility = 'hidden';
    }
    else {
        _dwFadeTimeLeft -= elapsedTicks;
        var newOpVal = _dwFadeTimeLeft / _dwTimeToFade;
        _dwDIV.style.opacity = newOpVal;
        _dwDIV.style.filter = 'alpha(opacity = ' + (newOpVal * 100) + ')';
        setTimeout("dwFadeOut(" + curTick + ")", _dwAnimationTick);
    }
}

// Session
function dwSetSession(Name) {
    document.cookie = Name + '=true';
}

function dwGetSession(Name) {
    var search = Name + "="
    var returnvalue = "";
    if (document.cookie.length > 0) {
        offset = document.cookie.indexOf(search)
        if (offset != -1) {
            offset += search.length
            end = document.cookie.indexOf(";", offset);
            if (end == -1) end = document.cookie.length;
            returnvalue = unescape(document.cookie.substring(offset, end))
        }
    }
    if (returnvalue) return true;
    else return false;
}



