function append_loader( el ) {
    el = $( el )[0];
    var img = $( '#__loader' );
    if ( img == undefined || img == null || img.length == 0 )
        img = $( '<img id="__loader" src="/my/img/loader.gif" />' ).appendTo( 'body' );
    $( el ).css( 'opacity', '0.01' );
    img._super = el;
    
    var left = $.browser.msie ? 340 : 0;
    $( img ).appendTo( el.offsetParent ).css( {
        display:    'block', 
        left:       ( left+ el.offsetLeft )+ 'px', 
        top:        el.offsetTop+ 'px',
        width:      $( el ).width()+ 'px',
        height:     $( el ).height()+ 'px',
        position:   'absolute'
    } );
};

function clear_loader() {
    var loader = $( '#__loader' )[0];
    if ( loader != undefined && loader != null ) {
        if ( loader._super != undefined )
            $( loader._super ).css( 'opacity', '0.99' );
        $( loader ).remove();
    }
};


function handle_upload( frame_id, callback ) {
    var iex_done = false;
    var frame    = $( '#'+ frame_id )[0];
    var cc_msie = 0;
    frame[ $.browser.msie ? 'onreadystatechange': 'onload' ] = function() {
        try {
            if ( $.browser.msie ) {
                if ( frame.readyState != "complete" ) return;
                return callback( {}, frame );
            }
            
            // parse antwort
            var txt = $.browser.msie
                ? frame.responseText
                : frame.contentDocument.body.textContent;
            
            var json = eval( '('+ txt + ')' );
            
            callback( json, frame );
        }
        catch(e) {
        }
    };
    
}




var supported_formats_arr =  ["mov","flv","avi","mpg","mpeg","mp4","divx","wmv","3gp","xvid","rm","ram","m4v"];
var supported_formats_hsh = {}; 
for ( var i= 0; i< supported_formats_arr.length; i++ )
    supported_formats_hsh[ supported_formats_arr[i] ] = true;

function init_upload_video() {
    $( '#upload_video' ).change( function() {
        
        if ( this.value.match( /\.([^.]+)$/ ) ) {
            var suffix = RegExp.$1.toLowerCase();
            if ( supported_formats_hsh[ suffix ] == undefined ) {
                alert( "Das scheint kein Video zu sein!\nUnterstützt werden folgende Formate:\n * ."+ supported_formats_arr.join( "\n * ." )+ "\n" );
                this.value = "";
                return;
            }
        }
        
        var file = this;
        append_loader( this );
        
        handle_upload( 'upload_target', function( json, frame ) {
            var ok = false;
            if ( $.browser.msie )
                ok = true;
            else {
            
                if ( json.error != undefined ) {
                    if ( json.error == 'no_file' )
                        alert( "Fehler beim hochladen\nBitte probier es ein wenig später nochmal" );
                    else if ( json.error == 'no_video' )
                        alert( "Das scheint kein Video zu sein!\nUnterstützt werden folgende Formate:\n * ."+ json.supported.join( "\n * ." )+ "\n" );
                }
                else
                    ok = true
            }
            
            // forward..
            if ( ok ) {
                document.location.href = '/my/profile/video';
                clear_loader();
                file.value    = "";
                file.disabled = false;
            }
        } );
        
        
        this.form.submit();
        this.disabled = true;
    } );
};



function init_upload_mp3s() {
    $( '#upload_mp3' ).change( function() {
        
        if ( !this.value.match( /\.mp3$/ ) ) {
            alert( "Das scheint keine MP3 zu sein" );
            this.value = "";
            return;
        }
        
        
        var file  = this;
        var title = $( '#upload_title' )[0];
        append_loader( this );
        
        handle_upload( 'upload_target', function( json, frame ) {
            var ok = false;
            if ( $.browser.msie )
                ok = true
            
            else {
                // fehler
                if ( json.error != undefined ) {
                    if ( json.error == 'no_file' )
                        alert( "Fehler beim hochladen\nBitte probier es ein wenig später nochmal" );
                    else if ( json.error == 'no_audio' )
                        alert( "Das scheint keine MP3-Datei zu sein!" );
                }
                else
                    ok = true
            }
            
            if ( ok )
                document.location.href= "/my/profile/mp3s";
            
        } );
        
        this.form.submit();
        title.disabled = true;
        this.disabled = true;
    } );
}





