There's a problem here. Suppose you call the function like this:
find_lines some words
The arguments of grep will be: "some" "words" "$FILENAME", but grep will interpret "words" a file, not a pattern to search for.
If you change it to "$*", then "some words" would be passed as one argument.
Also, you may want to add switch -q to grep to avoid printing the grep output.
I would rewrite the whole function like this:
function find_words()
{
test -z "$1" && return -1 || grep -q -i "$*" "$FILENAME"
}