salve a tutti

vi prego di armarvi di buona paziena e di darmi una mano, scusate la lunghezza del messaggio ma volevo essere quanto più chiaro possibile.

ho la necessità di permettere il download di immagini tramite readfile() di php. la cosa non mi crea alcun problema se fatta in semplice php. il problema è farlo in ajax, per questo ho postato qui.

ecco un pò di codice:

----------------------------------------------

PARTE JAVASCRIPT
Codice PHP:
var ora;

function 
GetXmlHttpObject()
    {
        if (
window.XMLHttpRequest) return new XMLHttpRequest();
        if (
window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); 
        return 
null;
    }

function 
smgo(percorso){
        
ora GetXmlHttpObject();
    if(
ora==null){
        
alert("Aggiornare il browser!");
        return;
    }
    var 
url "opera.php";
    
ora.onreadystatechange=lavora;
    
ora.open("POST"urltrue);
    
ora.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    
ora.send("percorso="+percorso);
}

function 
lavora(){
        if(
ora.onreadyState == 4)
        
//--che devo fare qui?

----------------------------------------------

PARTE HTML

Codice PHP:
<button onclick="smgo('immagini/1.jpg')">salva</button
----------------------------------------------

PARTE PHP
Codice PHP:
$attuale $_REQUEST['percorso'];
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($attuale));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' filesize($attuale));
readfile($attuale); 
----------------------------------------------

SPIEGAZIONE CODICE E RICHIESTA

-GetXmlHttpObject mi crea l'oggetto per le richieste asincrone
-smgo prende il percorso del file da scaricare che viene passato con method post alla pagina opera.php, inoltre invoca la funzione lavora al cambio di stato della richiesta
-lavora in teoria dovrebbe far comparire la finestra per il download

Come devo strutturare la funzione lavora affinchè compaia la finestra di download?

Grazie in anticipo per la risposta