Though it would be better to add a clear question to the question, I just noticed the comment in this line of the provided code:
if(url.toLowerCase().indexOf("youtube") > 0) // this is where my function fails.
You should check what var url = $("#<%=txtYoutubeLink.ClientID %>").val(); actually returns, because in case the url starts with youtube, the result of
url.toLowerCase().indexOf("youtube")
is 0.indexOf() does not check if a substring is contained in another string, but returns the position (starting at 0), in case the substring is contained, or -1 in case the substring is not contained. Just adjust to
if(url.toLowerCase().indexOf("youtube") >= 0)
For reference: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
solved testing if a link is a youtube link.