﻿//--------------------Variables------------------------
var mobjUPL = [];

function UploadReg(cid)
{
    var obj;

    if (UPLGet(cid)) return;
    
    obj = new FileUpload();
    obj.setParentCID(cid);

    mobjUPL.push(obj);
}

function UPLGet(cid)
{

    var i=0;
    var objSF;

    for (i = 0; i < mobjUPL.length; i++)
    {
        objSF = mobjUPL[i];
        
        if (objSF)
        {
            if(objSF.parentCID == cid)
            {
                return objSF;
                break;
            }
        }
    }

}

function FileUpload()
{

    var parentCID = '';
    var PROGRESS_INTERVAL = 500;
    var PROGRESS_COLOR = '#000080';

    var _divFrame;
    var _divUploadMessage;
    var _divUploadProgress;
    var _ifrPhoto;
    var _parentCID;

    var _loopCounter = 1;
    var _maxLoop = 10;
    var _photoUploadProgressTimer;

    this.setParentCID = setParentCID;
    this.getParentCIDEx = getParentCIDEx;
    this.getParentCID = getParentCID;
    this.initPhotoUpload = initPhotoUpload;
    this.beginPhotoUploadProgress = beginPhotoUploadProgress;
    this.clearPhotoUploadProgress = clearPhotoUploadProgress;
    this.updatePhotoUploadProgress = updatePhotoUploadProgress;
    this.photoUploadComplete = photoUploadComplete;
          
    function setParentCID(cid)
    {
       this.parentCID = cid;
   }

   function getParentCIDEx() {
       return replaceAll(this.parentCID, '_ifrPhoto', '');
   }
    
    function getParentCID()
    {
       return this.parentCID;
    }

    function initPhotoUpload() {
        _divFrame = document.getElementById(this.getParentCIDEx() + '_divFrame');
        _divUploadMessage = document.getElementById(this.getParentCIDEx() + '_divUploadMessage');
        _divUploadProgress = document.getElementById(this.getParentCIDEx() + '_divUploadProgress');
        _ifrPhoto = document.getElementById(this.getParentCIDEx() + '_ifrPhoto');
        _parentCID = this.getParentCID();

        var btnUpload = _ifrPhoto.contentWindow.document.getElementById('btnUpload');

        btnUpload.onclick = function(event) {
            var filPhoto = _ifrPhoto.contentWindow.document.getElementById('filPhoto');

            //Baisic validation for Photo
            _divUploadMessage.style.display = 'none';

            if (filPhoto.value.length == 0) {
                _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Please specify the file.</span>';
                _divUploadMessage.style.display = '';
                filPhoto.focus();
                return;
            }

            var regExp = /^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.jpg|.JPG|.gif|.GIF|.png|.PNG|.bmp|.BMP)$/;

            //if (!regExp.test(filPhoto.value)) //Somehow the expression does not work in Opera
            //{
            //    _divUploadMessage.innerHTML = '<span style=\"color:#ff0000\">Invalid file type. Only supports jpg, gif, png and bmp.</span>';
            //    _divUploadMessage.style.display = '';
            //    filPhoto.focus();
            //    return;
            //}

            UPLGet(_parentCID).beginPhotoUploadProgress();
            _ifrPhoto.contentWindow.document.getElementById('photoUpload').submit();
            _divFrame.style.display = 'none';
        }
    }

    function beginPhotoUploadProgress() {
        _divUploadProgress.style.display = '';
        clearPhotoUploadProgress();
        _photoUploadProgressTimer = setTimeout(this.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, tmpPath, filename) {

        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();
            }
        }

        //Setup the paths in the hidden fields
        gE(this.getParentCIDEx() + '_c').value = tmpPath;
        gE(this.getParentCIDEx() + '_f').value = filename;

        cbut(this.getParentCIDEx() + '_r');
        
    }
  
}