In regards to variables `i` and `j` they are loop index variables and can be declared in the loop alone instead of at the top.  It will clean up the code.

Example 

    for (var j=0;j<obj.length;++j){...}

Personally I would write it up like this describing `p` and `i` which are form elements.  In additon there is no need to duplicate code (example would be 3 identical for statments), you can gather all the form elements and concat the arrays together in one.  Then by using a switch statement you can minimize the duplicate `if`s for each element type and eliminate the need for duplicate for statements.  Have a look below. it is much cleaner.

    function test_submit(id){  
        var params=[],
            results=[],
            form=document.getElementById(id),
            obj;  

        for(var i = 0, var formElement = form.elements[i]; i < form.elements.length; i++) {  
            if (formElement.name) {
                switch (formElement.tagName) {
                    case "SELECT":
                        for(var j=0, var optionItem = formElement.options[j]; j < formElement.length; j++){  
                            if(optionItem.selected){  
                                var value = optionItem.value;  
                                if(!value) value = optionItem.text;  
                                params.push([formElement.name,value]);  
                            }  
                        }  
                        break;
                    case "INPUT":
                        var type=formElement.type,
                            value=formElement.value;  
                        if(type) type=type.toLowerCase();  
                        if(type && (type == 'radio' || type == 'checkbox')) {  
                            if(formElement.checked) params.push([formElement.name,value?value:'on']);  
                        }  
                        else params.push([formElement.name,value]);  
                        break;
                    case "TEXTAREA":
                        params.push([formElement.name,formElement.value]);  
                        break;
                }
            }
        }
        for (var i in params) results.push(params[i][0]+'='+escape(params[i][1]));  
        return results.join('&');  
    }