1) Массив символов из строки получается замечательным методом
split. Но в вашем случае и это не нужно - у строк есть замечательный метод
charAt(n), который возвращает символ за номером n.
2) Не обязательно передавать тип. Лучше всего - это передавать сразу value, т.е. сразу строку, которую вы проверяете. То же касается и source - передавайте сразу строку. Если же всё-таки хочется передавать dom-объект, то можно внутри самой ф-ции выполнять проверку типа такой:
if (obj.tagName=="input"){
//делаем всё то, что нужно в случае работы с инпутом.
} else {
//иначе делаем что-то другое))
};
3) Это вы, пардоньте, с чем b сравнивать будете?
for(var b=0; b<=source.value; b++)
4) Уберите break.
P. S. Кстати, учтите, если вы обратитесь к элементу source[b+1], а его не будет, то это вызовет ошибку.