function startUploadControl(){
    // ActiveX-Uploader
    if(navigator.appVersion.indexOf("MSIE") != -1 && navigator.platform.indexOf("Win32") != -1 && !window.opera) {
        // Laden des ActiveX-Controls, falls alles gut geht, ansonsten Laden des HTML-Controls
        try {
            if (paramInitResult == 'success.init.activex') {
                setActiveXUploaderCookie();
            }
            cookieValue = getActiveXUploaderCookie();
            if(cookieValue == 'activated') {
                ua = new ActiveXObject("Shell.UIHelper");
                showActivexUploader();
            }
            else {
                showHTMLUploader();
                document.getElementById('activexLinkDiv').style.display = 'block';
            }
        } catch (e) {
            showHTMLUploader();
        }
    }
    // Java-Uploader
    else {
        if(isJavaEnabled) {
            var cookieValue = getJavaUploaderCookie();
            if(isJavaUploaderAlreadyInitialized() && cookieValue!='deactivated') {
                showJavaUploader();
            }
            else {
                showHTMLUploader();
                if(navigator.userAgent.toLowerCase().indexOf('safari')==-1 && !window.opera) {
                    if(cookieValue!='deactivated') {
                        pollJavaDetector();
                    } else {
                        document.getElementById('javaLinkDiv').style.display = 'block';
                    }
                }
                else {
                    document.getElementById('notSupportedByBrowserDiv').style.display = 'block';
                }
            }
        }
        else {
            showHTMLUploader();
            document.getElementById('javaNotEnabledLinkDiv').style.display = 'block';
        }
    }
}

function pollJavaDetector() {
    data = document.getElementById("hiddenJvmDetector");
    // auf den hiddenJvmDetector-iframe warten
    if (data != null) {
        if (!window.opera) {
            if (data.contentDocument) {
                data_document = data.contentDocument;
            }else if (data.contentWindow) {
               data_document = data.contentWindow.document;
            }else {
                // data_document = data.document;
                data_document = document.frames['hiddenJvmDetector']
            }
        } else {
            data_document = data.contentDocument;
        }
        // auf das Detector-Applet warten
        if (data_document.Detector != null) {
            var isCorrectJavaVersion = initDetector(false);
            if (isCorrectJavaVersion) {
                initJavaUploader();
            } else {
                document.getElementById('wrongJavaVersionLinkDiv').style.display = 'block';
            }
        } else {
            setTimeout("pollJavaDetector()", 1000);
        }
    }
    else {
        setTimeout("pollJavaDetector()", 1000);
    }
}

function installActivexUploader() {
    if(window.navigator.userAgent.indexOf("SV1") != -1) {
        document.location.href = reqOriginServer+'/online/frame.htm?si='+reqOriginSession+'&goto='+gotoPath;
    } else {
        document.location.href = contextServletUserAlbumViewPath+'/initActiveX';
    }
}

function initActivexUploader() {
    var clubber = 0;
    if(reqClubUser=='true')
        clubber = 1;
    UploadCtrl.ControlType = 2;
    UploadCtrl.MaxFileSize = 0;
    UploadCtrl.MaxImageSize = 10;
    UploadCtrl.ConvertExtAllow = 'tif, tiff, bmp, psd, pict, gif, png';
    UploadCtrl.ContentLine1 = 'Ziehen Sie Ihre Fotos mit der Maus in diesen Bereich';
    UploadCtrl.Server = schemeServerPort;
    UploadCtrl.uriUpload = contextServletUserAlbumViewPath+'/uploadImage?control=komfort';
    UploadCtrl.uriCheck = contextServletUserAlbumPath+'/checkReply';
    UploadCtrl.SID = 'JSESSIONID='+getSessionCookie();
    UploadCtrl.UseCheck = 1;
    UploadCtrl.DisplayImageAtUpload = 0;
    UploadCtrl.DirectUpload = 1;
    UploadCtrl.ExtAllow = 'jpg, jpeg';
    UploadCtrl.RecursiveUpload = 0;
    UploadCtrl.IsClubUser = clubber;
    UploadCtrl.BitmapPath = bitmapPath;
    UploadCtrl.BkColor = '#ffffff';
    UploadCtrl.BPS = 56600;
    UploadCtrl.DropDirectUpload = 1;
    UploadCtrl.ConversionSizeType = 1;
    UploadCtrl.ConversionSize = "1280x960";
}

function initJavaUploader() {
    if(javaUploaderActive && isJavaEnabled && (navigator.appVersion.indexOf("MSIE") == -1)) {
        triedToInitializeJavaUploader = true;
        document.getElementById('javaUploaderDiv').style.display = 'block';
    }
}

function showHTMLUploader(){
    showDragnDropUploadImage = false;
    document.getElementById('htmlUploaderDiv').style.display = 'block';
}

function showActivexInitialization(){
    var out = '<div id="activexInitializationDiv" style="visibility:visible;position:absolute;background:#ffffff;">';
    out += '<object ';
    out += '    classid="'+activexClassId+'" ';
    out += '    codebase="'+activexPath + activexCabFile + activexVersion+'" ';
    out += '    width="'+activexWidth+'" ';
    out += '    height="'+activexHeight+'" ';
    out += '    id="UploadCtrl">';
    out += '</object>';
    out += '</div>';
    out += '<div id="activexLoadingDiv" class="b" style="visibility:visible;position:relative;background:#ffffff;width: 100%; height: 37px">';
    out += text_loading;
    out += '</div>';
    document.writeln(out);
}

function showActivexUploader(){

    showDragnDropUploadImage = true;
    var out = '<div id="activexUploaderDiv">';
    out += '<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td width="100%">';
    out += '<object ';
    out += '    classid="'+activexClassId+'" ';
    out += '    codebase="'+activexPath + activexCabFile + activexVersion+'" ';
    out += '    width="'+activexWidth+'" ';
    out += '    height="'+activexHeight+'" ';
    out += '    id="UploadCtrl">';
    out += '</object>';
    out += '</td>';
    out += '<td width="5"><img src="'+imgbase+'/p.gif" width="5" height="1" border="0" alt="" /></td>';
    out += '<td class="b"><a href="#" onClick="hideActivexUploader();return false;"><nobr>Standard-Upload aktivieren</nobr></a></td>';
    out += '</tr></table></div>';
    document.writeln(out);

    if(document.UploadCtrl.readyState==4) {
        if(document.UploadCtrl.IsLoad==1) {
            initActivexUploader();
            pollActivexEvent();
            document.getElementById('activexUploaderDiv').style.display = 'block';
        }
        else {
            document.getElementById('activexUploaderDiv').style.display = 'none';
            showHTMLUploader();
        }
    }
    else {
        document.getElementById('activexUploaderDiv').style.display = 'none';
        showHTMLUploader();
    }
}

function showJavaUploader() {
    if(!triedToInitializeJavaUploader) {
        initJavaUploader();
    }
    else {
        try {
            isJavaUploaderInited = document.FileUpload.isInited();
        }
        catch(e) {
            isJavaUploaderInited = false;
        }
        if(isJavaUploaderInited) {
            hideHTMLUploader();
            if(isAlbumEmpty) {
                document.getElementById('dragnDropUploadInstructionsDiv').style.display = 'block';
                document.getElementById('htmlUploadInstructionsDiv').style.display = 'none';
            }
            document.getElementById('javaUploaderDiv').style.display = 'block';
            document.getElementById('javaUploaderDiv').style.visibility = 'visible';
            document.getElementById('javaUploaderDiv').style.display = 'block';
            document.getElementById('javaUploaderDiv').style.width = '100%';
            document.getElementById('javaUploaderDiv').style.height = 'auto';
            setJavaUploaderCookie();
            setJavaUploaderInitializedCookie();
        }
        else {
            alert(javaUploaderNotInitializedMsg);
        }
    }
}

function hideHTMLUploader() {
    document.getElementById('htmlUploaderDiv').style.display = 'none';
}

function hideActivexUploader() {
    unsetActiveXUploaderCookie();
    document.getElementById('activexUploaderDiv').style.display = 'none';
    if(isAlbumEmpty) {
        document.getElementById('dragnDropUploadInstructionsDiv').style.display = 'none';
        document.getElementById('htmlUploadInstructionsDiv').style.display = 'block';
    }
    showHTMLUploader();
    document.getElementById('activexLinkDiv').style.display = 'block';
}

function hideJavaUploader() {
    if(isAlbumEmpty) {
        document.getElementById('dragnDropUploadInstructionsDiv').style.display = 'none';
        document.getElementById('htmlUploadInstructionsDiv').style.display = 'block';
    }
    document.getElementById('javaUploaderDiv').style.visibility = 'hidden';
    document.getElementById('javaUploaderDiv').style.width = '0px';
    document.getElementById('javaUploaderDiv').style.height = '0px';
    showHTMLUploader();
    document.getElementById('javaLinkDiv').style.display = 'block';
    unsetJavaUploaderCookie();
}

// gibt den Cookie-Wert (ID) des Session-Cookies zur?ck
function getSessionCookie() {
    var res = '';
    var a = document.cookie+";";
    var n = 'JSESSIONID';
    var pos = a.indexOf(n)+n.length;
    var check = a.substring(pos, pos+1);
    if(check == ";") {}
    else {
        a = a.substr(pos+1, a.length);
        res = a.substring(0, a.search(";"));
    }
    return res;
}

function getActiveXUploaderCookie() {
    res = '';
    a = document.cookie+";";
    n = 'web_de_activex_fotoalbum_uploader_'+requestAlbumUserName;
    pos = a.indexOf(n)+n.length;
    check = a.substring(pos, pos+1);
    if(check == ";") {}
    else {
        a = a.substr(pos+1, a.length);
        res = a.substring(0, a.search(";"));
    }
    return res;
}

function getJavaUploaderCookie() {
    res = '';
    a = document.cookie+";";
    n = 'web_de_java_fotoalbum_uploader_'+requestAlbumUserName;
    pos = a.indexOf(n)+n.length;
    check = a.substring(pos, pos+1);
    if(check == ";") {}
    else {
        a = a.substr(pos+1, a.length);
        res = a.substring(0, a.search(";"));
    }
    return res;
}

function setActiveXUploaderCookie() {
    var a = new Date();
    a = new Date(a.getTime() + 1000*60*60*24*365*10);
    document.cookie = 'web_de_activex_fotoalbum_uploader_'+requestAlbumUserName+'=activated;path=/; expires=' + a.toGMTString() + ';';
}

function setTippUploadXPCookie() {
    // info ausblenden
    document.getElementById('messageBox').style.display='none';
    var a = new Date();
    a = new Date(a.getTime() + 1000*60*60*24*365*10);
    document.cookie = 'web_de_fotoalbum_tipp_upload_xp_'+requestAlbumUserName+'=off;path=/; expires=' + a.toGMTString() + ';';
}

function setJavaUploaderInitializedCookie() {
    document.cookie = 'web_de_java_fotoalbum_uploader_initialized_'+requestAlbumUserName+'=true;path=/;';
}

function isJavaUploaderAlreadyInitialized() {
    res = '';
    a = document.cookie+";";
    n = 'web_de_java_fotoalbum_uploader_initialized_'+requestAlbumUserName;
    pos = a.indexOf(n)+n.length;
    check = a.substring(pos, pos+1);
    if(check == ";") {}
    else {
        a = a.substr(pos+1, a.length);
        res = a.substring(0, a.search(";"));
    }
    return res=='true';
}

function setJavaUploaderCookie() {
    var a = new Date();
    a = new Date(a.getTime() + 1000*60*60*24*365*10);
    document.cookie = 'web_de_java_fotoalbum_uploader_'+requestAlbumUserName+'=activated;path=/; expires=' + a.toGMTString() + ';';
}

function unsetActiveXUploaderCookie() {
     document.cookie = 'web_de_activex_fotoalbum_uploader_'+requestAlbumUserName+'=;path=/;expires=Thu, 01-Jan-70 00:00:01 GMT;';
}

function unsetJavaUploaderCookie() {
     var a = new Date();
    a = new Date(a.getTime() + 1000*60*60*24*365*10);
    document.cookie = 'web_de_java_fotoalbum_uploader_'+requestAlbumUserName+'=deactivated;path=/; expires=' + a.toGMTString() + ';';
}

function onUploadEvent(EVENT_TYPE) {
    switch(parseInt(EVENT_TYPE)) {
        case 0: // Applet initialisiert
            showJavaUploader();
            break;
        case 1:
            // Upload startet
            break;
    }
}

// Checkt das ActiveX-Control auf der Init-Seite
var counter = 1;
var timeout_limit = 90; // in Sekunden

function checkActivexInitialization() {
    if(document.UploadCtrl.IsLoad != 1) {
        if(counter < timeout_limit) {
            ++counter;
            window.setTimeout("checkActivexInitialization()",1000);
        }
        else {
            document.getElementById('activexInitializationDiv').style.display = 'none';
            document.getElementById('activexLoadingDiv').style.display = 'none';
            document.initActivexForm.errorMessage.value = 'error.init.activex';
            document.initActivexForm.submit();
        }
    }
    else {
        document.UploadCtrl.ControlType = 2;
        document.UploadCtrl.BkColor = '#ffffff';
        document.getElementById('activexInitializationDiv').style.display = 'none';
        document.getElementById('activexLoadingDiv').style.display = 'none';
        document.initActivexForm.initResult.value = 'success.init.activex';
        document.initActivexForm.submit();
    }
}

function doUploadEvent(test) {
    activexRefreshEventFired(test, document.UploadCtrl.propRefreshErrorMsg, document.UploadCtrl.propAllFiles);
}

function activexRefreshEventFired(error, errorMsg, fileCount) {
    var encoded;
    var encodedErrorMsg = "errorMsg=0";
    var encodedFileCount = "fileCount="+fileCount;
    if (errorMsg.search(/=10:/) != -1 || errorMsg.search(/\|\|10:/) != -1) {
        encodedErrorMsg = "errorMsg=10";
    } else if (errorMsg.search(/=12:/) != -1 || errorMsg.search(/\|\|12:/) != -1) {
        encodedErrorMsg = "errorMsg=12";
    } else if (errorMsg.search(/=13:/) != -1 || errorMsg.search(/\|\|13:/) != -1) {
        encodedErrorMsg = "errorMsg=13";
    }
    if (ver.indexOf('MSIE 5.0') != -1) {
        encoded = "error=0";
    }else {
        encoded = encodeURI(String(error));
        encodedErrorMsg = encodeURI(encodedErrorMsg);
        encodedFileCount = encodeURI(encodedFileCount);
    }
    document.location = contextServletUserAlbumViewPath+'?'+encoded+'&'+encodedErrorMsg+"&"+encodedFileCount;
}

// 'manuelles' Pollen des AxtiveX-Controls nach dem Refresh-Event
// Hintergrund: nach erstmaliger Initialisierung funktioniert das Eventing des Controls
// nicht, erst nach einem Neustart des Browsers. Deswegen gibt es diese Funktion, die
// das Refresh-Event in diesen Situationen eben pollt.
function pollActivexEvent() {
    if (document.UploadCtrl != null) {
        var test = document.UploadCtrl.propRefresh;
        if (test != "" && test && test != null) {
            doUploadEvent(test);
        } else {
            setTimeout("pollActivexEvent()", 1000);
        }
    }
}

// Event-Listener f?r den Upload-Start
function eventActivexStartInit(){
    if (document.UploadCtrl) {
        initActivexUploader();
    }
}

// Event-Listener f?r das Neuladen der Seite nach dem Upload
function eventActivexRefresh(){
    if(!window.opera){
        var test = document.UploadCtrl.propRefresh;
        if (document.UploadCtrl && test && test != "" && test != null) {
            doUploadEvent(test);
        }
    }
}

function activateCurrentKomfortUpload() {
    if(document.getElementById('activexLinkDiv').style.display == 'block') {
        installActivexUploader();
    }
    else if(document.getElementById('javaLinkDiv').style.display == 'block') {
        showJavaUploader();
        document.getElementById('messageBox').style.display = 'none';
    }
    else if(document.getElementById('javaNotEnabledLinkDiv').style.display == 'block') {
        autoPopup('url='+contextServletUserAlbumPath+'/javaDisabledPopup?popupType=upload','name=JavaDisabled,width=500,height=324,scrollbars=no,resizable=no');
    }
    else if(document.getElementById('wrongJavaVersionLinkDiv').style.display == 'block') {
        initDetector(true, 'upload');
    }
    else if(document.getElementById('notSupportedByBrowserDiv').style.display == 'block') {
        autoPopup('url='+komfortUploadHelpJump, '${initParam.helpPopupProperties}');
    }
}
