function rc(str, dna) {
    var rev = '';
    for (i = str.length - 1; i >= 0; --i) {
	switch (str.charAt(i)) {
	case 'A':
	    rev += dna ? 'T' : 'U';
	    break;
	case 'a':
	    rev += dna ? 't' : 'u';
	    break;
	case 'C':
	    rev += 'G';
	    break;
	case 'c':
	    rev += 'g';
	    break;
	case 'G':
	    rev += 'C';
	    break;
	case 'g':
	    rev += 'c';
	    break;
	case 'T':
	case 'U':
	    rev += 'A';
	    break;
	case 't':
	case 'u':
	    rev += 'a';
	    break;
	default:
	    rev += str.charAt(i);
	}
    }
    return rev;
}
