window.onload = function() {
    adSetup();
    infoStatus();
    setInterval("infoStatus()", 10000);
    //setInterval("moveArrow()", 10000);
}
window.onresize = function() {
    adSetup();
}

var req;
var timerID = 0;
var isUpload=false;
var isDownload=false;

function adSetup() {
    var d2 = xGetElementById('container');
    var d3 = xGetElementById('violator');
    var initX = xOffsetLeft(d2);
    var initY = xOffsetTop(d2);
    var adWidth = xWidth(d2);
    xMoveTo(d3, initX+500 , initY - 5);
    xDisplay(d3, '');
}

function status() {
    var url = "/ajax/status.jsp?r="+new Date().valueOf();
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    req.open("GET", url, true);
    req.onreadystatechange = callback;
    req.send(null);
}

function infoStatus() {
    var url = "/ajax/sessionInfo.jsp?r="+new Date().valueOf();
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    req.open("GET", url, true);
    req.onreadystatechange = infoCallback;
    req.send(null);
}

function callback() {
    if (req.readyState == 4) {
        if (req.status == 200) {
            parseMessage();
        }
    }
}

function infoCallback() {
    if (req.readyState == 4) {
        if (req.status == 200) {
            parseInfoMessage();
        }
    }
}

function parseMessage() {
    var message = req.responseXML.getElementsByTagName("message")[0];
    if (getNodeValue(message, 'ok') == 'false') {
        clearTimeout(timerID);
        document.location = '/action/index';
        return;
    }
    var fileName = unescape(getNodeValue(message, 'fileName'));
    var totalSize = getNodeValue(message, 'totalSize');
    var bytesRead = getNodeValue(message, 'bytesRead');
    var elapsedTime = getNodeValue(message, 'elapsedTime');
    var estimatedTime = getNodeValue(message, 'estimatedTime');
    var avgThroughput = getNodeValue(message, 'avgThroughput');
    var progressPercent = getNodeValue(message, 'progressPercent');
    xInnerHtml('progressBarText1',fileName);
    xInnerHtml('progressBarText2',totalSize + ' MB');
    xInnerHtml('progressBarText3',bytesRead + ' MB');
    xInnerHtml('progressBarText4',elapsedTime);
    xInnerHtml('progressBarText5',estimatedTime);
    xInnerHtml('progressBarText6',avgThroughput + ' KB/Sec');
    xInnerHtml('progressBarText7',progressPercent + '%');
    xWidth('progressBarBoxContent',Math.round(parseInt(progressPercent * 3.5)));
}

function parseInfoMessage() {
    var message = req.responseXML.getElementsByTagName("message")[0];
    var sessions = getNodeValue(message, 'sessions');
    var uploadsInProgress = getNodeValue(message, 'uploadsInProgress');
    var downloadsInProgress = getNodeValue(message, 'downloadsInProgress');
    var transferCount = getNodeValue(message, 'transferCount');
    var totalMB = getNodeValue(message, 'totalMB');

    var uploadStr;
    var downloadStr;
    if (uploadsInProgress > 0) {
        uploadStr = "<img id='upload_ind' src='/images/upload-on.gif'>";
    } else {
        uploadStr = "<img id='upload_ind' src='/images/upload-off.gif'>";
    }
    if (downloadsInProgress > 0) {
        downloadStr = "<img id='download_ind' src='/images/download-on.gif'>";
    } else {
        downloadStr = "<img id='download_ind' src='/images/download-off.gif'>";
    }

    document.getElementById('transferCount').innerHTML = transferCount;
    document.getElementById('uploads').innerHTML = uploadStr + ":"+uploadsInProgress;
    document.getElementById('downloads').innerHTML = downloadStr +":"+ downloadsInProgress;
    document.getElementById('totalMB').innerHTML = totalMB +"MB";


}

function getNodeValue(obj, tag)
{
    return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
}

function validate() {

    if (document.nethal.email.value == '') {
        alert('Netfang móttakanda vantar!')
        return false;
    } else if (document.nethal.senderId.value == '') {
        alert('Sendanda vantar!')
        return false;
    } else if (document.nethal.thefile.value == '') {
        alert('Skrá vantar!')
        return false;
    }
    return validateMessage();
}

function startProgressMeter() {
    xDisplay('errormsg','none');

    if (!validate()) {
        return false;
    }
    xDisplay('fieldwrap', 'none');
    xDisplay('help', 'none');
    xDisplay('cancelbutton', 'block');
    xDisplay('progressBar','block');
    xInnerHtml('progressBarText1','Starting... ');
    xInnerHtml('progressBarText2','...');
    xInnerHtml('progressBarText3','...');
    xInnerHtml('progressBarText4','...');
    xInnerHtml('progressBarText5','...');
    xInnerHtml('progressBarText6','...');
    xInnerHtml('progressBarText7','0%');
    document.getElementById('submitbutton').disabled = true;
    setInterval("status()", 2000);
    return true;
}

function showInfo() {
    xDisplay('abc','block');
    xHide('infoLink');
}

function showLayer(layer) {
    xDisplay('extraInfo','block');
}

var arrow = 1;

/*
function moveArrow() {
    var e;
    var prevArrow = arrow - 1;
    if (arrow == 1) {
        xHide('a1');
        xHide('a2');
        xHide('a3');
        arrow++;
        setTimeout("moveArrow()", 500);
    } else if (arrow <= 3) {
        xShow('a' + prevArrow);
        arrow++;
        setTimeout("moveArrow()", 500);
    } else {
        xShow('a' + prevArrow);
        arrow = 1;
    }
}
*/

function displayHelp() {
    xDisplay('helpstep1', 'block');
    xDisplay('helpstep2', 'block');
    xDisplay('helpstep3', 'block');
}

function validateMessage() {
    var maxlength = 5000;
    if (document.nethal.message.value.length >= maxlength) {
        alert('Your comments must be 5000 characters or less');
        document.nethal.message.focus();
        return false;
    } else {
        return true;
    }
}



