﻿var testimonyTimer;
var testimonyID = 'Testimonials';
var testimonyDelay = 5000;
var TimeToFade = 1000.0
var testimonyState = 0;
var xmlHttp;
var testimonyTemplate;
function randomFromTo(from, to) {
    return Math.floor(Math.random() * (to - from + 1) + from);
}

function loadTestimonials() {
    // Create xmlHttp Object
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch (e) {
        try {
            // Internet Explorer
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    xmlHttp.onreadystatechange = loaded;
    xmlHttp.open("GET", "testimonials.xml", true);
    xmlHttp.setRequestHeader("Content-Type", "text/xml");

    xmlHttp.send(null);
}
function loaded() {
    if (xmlHttp.readyState == 4) {
        try {
            chooseTestimonials()
            startTestimonyTimer()
        }
        catch (e) {
        }
    }

}

function chooseTestimonials() {
    var response = xmlHttp.responseXML.documentElement;
    var tNodes = response.getElementsByTagName('testimony');
    var r = randomFromTo(0, tNodes.length - 1);
    var name = tNodes[r].getElementsByTagName('name')[0].firstChild.nodeValue
    var statement = tNodes[r].getElementsByTagName('statement')[0].firstChild.nodeValue
    showTestimony(name, statement)
}


function showTestimony(name, statement) {
    divRef = document.getElementById(testimonyID);
    if (!divRef) {
        alert('No target for testimonial');
        return false;
    }
    var template = testimonyTemplate;
    template = template.replace(/@s/i, statement);
    template = template.replace(/@n/i, name);
    try {
        divRef.innerHTML = template;
    } catch (e) {
        alert('Cannot set testimony');
    }

    return true;
}

function startTestimonyTimer() {
    testimonyTimer = window.setInterval('fade()', testimonyDelay)
}

function fade() {
    window.clearInterval(testimonyTimer);

    var element = document.getElementById(testimonyID);
    if (element == null)
        return;

    if (element.FadeState == null) {
        if (element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1') {
            element.FadeState = 2;
        }
        else {
            element.FadeState = -2;
        }
    }
    testimonyState = element.FadeState;
    if (element.FadeState == 1 || element.FadeState == -1) {
        element.FadeState = element.FadeState == 1 ? -1 : 1;
        element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
    }
    else {
        element.FadeState = element.FadeState == 2 ? -1 : 1;
        element.FadeTimeLeft = TimeToFade;
        setTimeout("animateFade(" + new Date().getTime() + ",'" + testimonyID + "')", 33);
    }
}

function animateFade(lastTick, eid) {
    var curTick = new Date().getTime();
    var elapsedTicks = curTick - lastTick;

    var element = document.getElementById(eid);

    if (element.FadeTimeLeft <= elapsedTicks) {
        element.style.opacity = element.FadeState == 1 ? '1' : '0';
        element.style.filter = 'alpha(opacity = ' + (element.FadeState == 1 ? '100' : '0') + ')';
        element.FadeState = element.FadeState == 1 ? 2 : -2;
        if (testimonyState == 2) {
            chooseTestimonials();
            fade();
        } else {
            element.style.filter = '';
            startTestimonyTimer();
        }
        return;
    }

    element.FadeTimeLeft -= elapsedTicks;
    var newOpVal = element.FadeTimeLeft / TimeToFade;
    if (element.FadeState == 1)
        newOpVal = 1 - newOpVal;

    element.style.opacity = newOpVal;
    element.style.filter = 'alpha(opacity = ' + (newOpVal * 100) + ')';

    setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}

function initTestimonials(displayTime) {
    testimonyDelay = displayTime;
    divRef = document.getElementById(testimonyID);
    if (!divRef) {
        alert('No target for testimonial');
        return false;
    }
    testimonyTemplate = divRef.innerHTML;
    divRef.innerHTML = '';
    loadTestimonials();
}

