﻿var animationInProgress = 0;


function expand_init(tagName, className, initial_size) {
    var expandableElements = document.getElementsByTagName(tagName);
    for (var i = 0; i < expandableElements.length; i++) {
        if (expandableElements[i].className.indexOf(className) != -1) {
            expandableElements[i].minHeight = initial_size;
            expandableElements[i].fullHeight = expandableElements[i].offsetHeight;
            expandableElements[i].style.height = initial_size + 'px';
            expandableElements[i].expandState = '0';
            expandableElements[i].animationInProgress = 0;
        }
    }
}

function toggleExpand(control) {
    var beginExpand = 1;
    var expandableElements = document.getElementsByTagName(control.tagName);
    for (var i = 0; i < expandableElements.length; i++) {
        if (expandableElements[i].animationInProgress == 1) {
            beginExpand = 0;
        }
    }

    if (beginExpand) {
        control.tempOnClick = control.onclick;
        control.onclick = '';
        var target, direction;
        if (control.expandState == 0) {
            control.direction = 1;
            control.target = control.fullHeight;
        } else {
            control.direction = -1;
            control.target = control.minHeight;
        }
        animFunction = setInterval(function() { animateSlide(control, control.direction) }, 20);
    }
}

function animateSlide(control, direction) {
    var target = control.target, current = parseInt(control.style.height);
    control.animationInProgress = 1;

    if ((direction == 1 && current / target > 0.97) || (direction == -1 && current / target < 1.03)) {
        finish_expand(control);
    } else {
        amountToAdjust = Math.ceil(direction * Math.max(Math.abs(target - current) * 0.2, 1));
        control.style.height = current + amountToAdjust + 'px';
    }
}

function finish_expand(control) {
    clearInterval(animFunction);
    control.style.height = control.target + 'px';
    if (control.target == control.fullHeight) {
        control.expandState = 1;
        control.style.backgroundImage = 'url(//apps.wmc.ac.uk/courses/img/less.gif)';
    } else {
        control.expandState = 0;
        control.style.backgroundImage = 'url(//apps.wmc.ac.uk/courses/img/more.gif)';
    }
    control.animationInProgress = 0;
    control.direction = 0;
    control.onclick = control.tempOnClick; 'toggleExpand(this);';
}

function toggleView(controlName) {
    if (controlName == 'courseDetails') {
        var controlToShow = document.getElementById('courseDetails');
        var controlToHide = document.getElementById('timetableDetails');
    } else {
        var controlToShow = document.getElementById('timetableDetails');
        var controlToHide = document.getElementById('courseDetails');
    }

 controlToShow.className = controlToShow.baseClass;
 controlToHide.className = controlToHide.baseClass + '  printonly';
/* if (controlToShow.className.indexOf("printonly") > 0 && animationInProgress == 0) {
        controlToHide.style.opacity = 1;
        controlToShow.style.opacity = 0;
        controlToHide.style.filter = 'alpha(opacity=100)';
        controlToShow.style.filter = 'alpha(opacity=0)';
        controlToHide.className = controlToHide.baseClass;
        animFadeFunction = setInterval(function() { fadeOut(controlToShow, controlToHide) }, 20);
    }*/
}

function fadeOut(controlToShow, controlToHide) {
    if (controlToHide.style.opacity <= 0) {
        controlToHide.className = controlToHide.baseClass + " printonly";
        controlToHide.style.opacity = 1;
        controlToHide.style.filter = 'alpha(opacity=100)';
        clearInterval(animFadeFunction);
        controlToShow.className = controlToHide.baseClass;
        animFadeFunction = setInterval(function() { fadeIn(controlToShow) }, 20);
    } else {
        animationInProgress = 1;
        controlToHide.style.opacity -= 0.1;
        controlToHide.style.filter = 'alpha(opacity=' + parseFloat(controlToHide.style.opacity) * 100 + ')';
    }
}

function fadeIn(controlToShow) {
    if (controlToShow.style.opacity >= 1) {
        controlToShow.style.opacity = 1;
        controlToShow.style.filter = 'alpha(opacity=100)';
        clearInterval(animFadeFunction);
        animationInProgress = 0;
		  document.getElementById("courseDetails").style.height="auto";
		  document.getElementById("timetableDetails").style.height="auto";
		  
    } else {
        animationInProgress = 1;
        controlToShow.style.opacity = parseFloat(controlToShow.style.opacity) + 0.1;
        controlToShow.style.filter = 'alpha(opacity=' + parseFloat(controlToShow.style.opacity) * 100 + ')';
    }
}

