function prototype_process_form(form) {
    if(document.getElementById(form+'_loading')) {
        document.getElementById(form+'_loading').style.display = 'block';
    }
    
    if(document.getElementById(form+'_output')) {
        document.getElementById(form+'_output').style.display = 'none';      
    }       
    
    $(form).request({
        onComplete: function(transport) {
            prototype_process_form_response(form,transport.responseText) 
        }
    })    
    
   return false;
}

function prototype_process_form_response(form,result) {  
    if(document.getElementById(form+'_loading')) {
        document.getElementById(form+'_loading').style.display = 'none';
    }     
         
    result = result.split("\n");

    var message = '';
    var error   = new Array();

    for(i=0;i<result.length;i++) {
        if(result[i].indexOf('location:') == 0) {
            window.location = result[i].substr(10);         
        } else if(result[i].indexOf('show:') == 0) {
            document.getElementById(result[i].substr(6)).style.display = 'block';         
        } else if(result[i].indexOf('hide:') == 0) {
            document.getElementById(result[i].substr(6)).style.display = 'none';
        } else if(result[i].indexOf('innerhtml:') == 0) {
            var detail = result[i].substr(11).split("|");

            document.getElementById(detail[0]).innerHTML = detail[1];
        } else if(result[i].indexOf('message:') == 0) {
            alert(result[i].substr(9));
        } else if(result[i].indexOf('error:') == 0) {
            error[error.length] = '- '+result[i].substr(7);                  
        }               
    }
    
    if(error.length) {
        alert('Please fix the following errors as indicated:\n'+error.join('\n'));       
    }
}