var $target_zip_code = 'zip';
var $target_state = 'state';
var $target_address01 = 'address01';
var $target_address02 = 'address02';

function zip2address(zip, state, address01, address02){

    if(zip){
        $target_zip_code = zip;
    }
    if(state){
        $target_state = state;
    }
    if(address01){
        $target_address01 = address01;
    }
    if(address02){
        $target_address02 = address02;
    }

    if(document.getElementById($target_zip_code).value){
        var $params = 'param[zip_code]=' + encodeURIComponent(document.getElementById($target_zip_code).value);

        new Ajax.Request('/async/get_address.php?' + $params,
            {
                 method: 'get',
                 onComplete: displayAddress
            });
    }
}

function address2zip(zip, state, address){

    if(zip){
        $target_zip_code = zip;
    }
    if(state){
        $target_state = state;
    }
    if(address){
        $target_address = address;
    }

    if(document.getElementById($target_state).value || document.getElementById($target_address).value){
        var $params = 'param[state]=' + encodeURIComponent(document.getElementById($target_state).value) + '&param[address]=' + encodeURIComponent(document.getElementById($target_address).value);

        new Ajax.Request('/async/get_address.php?' + $params,
            {
                 method: 'get',
                 onComplete: displayAddress
            });
    }
}

function displayAddress(res){

    var response = eval("(" + res.responseText + ")");

    if(response.error){
        alert(response.error);
    }else{
        for (i in response) {
            var response = response[i];
            break;
        }

        document.getElementById($target_zip_code).value  = response.zip_code;

        if(document.getElementById($target_state).options[0].value != 0){
            document.getElementById($target_state).options[response.state - 1].selected  = true;
        }else{
            document.getElementById($target_state).options[response.state].selected  = true;
        }
        document.getElementById($target_address01).value   = response.address01 + response.address02;
    }
}
