﻿var PROGRESS_INTERVAL = 500;
var PROGRESS_COLOR = '#000080';

var _divFrame;
var _divUploadMessage;
var _divUploadProgress;
var _ifrPhoto;

var _loopCounter = 1;
var _maxLoop = 10;
var _photoUploadProgressTimer;


function removeSubString(s, t) {
    /*
    **  Remove all occurrences of a token in a string
    **    s  string to be processed
    **    t  token to be removed
    **  returns new string
    */
    i = s.indexOf(t);
    r = "";
    if (i == -1) return s;
    r += s.substring(0, i) + removeSubString(s.substring(i + t.length), t);
    return r;
}

function initPhotoUpload(divFrameId, ifrPhotoId, divUploadMessageId, divUploadProgressId)
{

    _ifrPhoto = document.getElementById(ifrPhotoId);

    if (_ifrPhoto !== null) {
        if (typeof (_ifrPhoto.contentWindow.document) == "unknown") {
            photoUploadComplete("O tamanho máximo permitido são 2MB.", true, divUploadProgressId, divUploadMessageId, divFrameId);
            _ifrPhoto.src = removeSubString(_ifrPhoto.src, "res: //ieframe.dll/dnserror.htm#");
            return;
        }

        var btnUpload = _ifrPhoto.contentWindow.document.getElementById('btnUpload');

        btnUpload.onclick = function (event) {
            var _divFrame = document.getElementById(divFrameId);
            var _divUploadMessage = document.getElementById(divUploadMessageId);
            var _divUploadProgress = document.getElementById(divUploadProgressId);

            var _ifrPhoto = document.getElementById(ifrPhotoId);
            var filPhoto = _ifrPhoto.contentWindow.document.getElementById('filPhoto');

            //Basic validation for Photo
            _divUploadMessage.style.display = 'none';

            if (filPhoto.value.length == 0) {
                _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Nenhum ficheiro introduzido.</span>';
                _divUploadMessage.style.display = '';
                filPhoto.focus();
                return;
            }

            //var regExp = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.jpg|.JPG|.gif|.GIF|.png|.PNG|.bmp|.BMP|.avi|.AVI|.fla|.FLA|.wav|.WAV)$/;
            var regExp = /(.jpg|.JPG|.jpeg|.JPEG|.gif|.GIF|.png|.PNG|.bmp|.BMP|.avi|.AVI|.fla|.FLA|.wav|.WAV|.doc|.DOC|.docx|.DOCX|.pdf|.PDF|.txt|.TXT|.swf|.SWF)$/;

            if (!regExp.test(filPhoto.value)) //Somehow the expression does not work in Opera
            {
                _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Tipo de ficheiro inválido. São apenas suportados avi, fla, wav, jpg, gif, png, bmp, doc, docx, pdf and txt.</span>';
                _divUploadMessage.style.display = '';
                filPhoto.focus();
                return;
            }

            beginPhotoUploadProgress(_divUploadProgress);

            _ifrPhoto.contentWindow.document.getElementById('photoUpload').submit();
            _divFrame.style.display = 'none';
        }
    }
}

function beginPhotoUploadProgress(_divUploadProgress)
{
    _divUploadProgress.style.display = '';
    clearPhotoUploadProgress();
    _photoUploadProgressTimer = setTimeout(updatePhotoUploadProgress, PROGRESS_INTERVAL);
}

function clearPhotoUploadProgress()
{
    for (var i = 1; i <= _maxLoop; i++)
    {
        document.getElementById('tdProgress' + i).style.backgroundColor = 'transparent';
    }

    document.getElementById('tdProgress1').style.backgroundColor = PROGRESS_COLOR;
    _loopCounter = 1;
}

function updatePhotoUploadProgress()
{
    _loopCounter += 1;

    if (_loopCounter <= _maxLoop)
    {
        document.getElementById('tdProgress' + _loopCounter).style.backgroundColor = PROGRESS_COLOR;
    }
    else 
    {
        clearPhotoUploadProgress();
    }

    if (_photoUploadProgressTimer)
    {
        clearTimeout(_photoUploadProgressTimer);
    }

    _photoUploadProgressTimer = setTimeout(updatePhotoUploadProgress, PROGRESS_INTERVAL);
}

function photoUploadComplete(message, isError, divUploadProgressId, divUploadMessageId, divFrameId) 
{

    var _divFrame = document.getElementById(divFrameId);
    var _divUploadMessage = document.getElementById(divUploadMessageId);
    var _divUploadProgress = document.getElementById(divUploadProgressId);

    clearPhotoUploadProgress();

    if (_photoUploadProgressTimer)
    {
        clearTimeout(_photoUploadProgressTimer);
    }

    _divUploadProgress.style.display = 'none';
    _divUploadMessage.style.display = 'none';
    _divFrame.style.display = '';

    if (message.length)
    {
        var color = (isError) ? '#ff0000' : '#008000';

        _divUploadMessage.innerHTML = '<span style=\"color:' + color + '\;font-weight:bold">' + message + '</span>';
        _divUploadMessage.style.display = '';

//        if (isError)
//        {
//            _ifrPhoto.contentWindow.document.getElementById('filPhoto').focus();
//        }
    }
}
