Всем привет. Недавно я начал изучать js по книге Изучаем JavaScript headfirst, но столкнулся с несколькими проблемами, точнее не проблемами, просто непонятно как все это работает. Можете пожалуйста объяснить некоторые вещи.
1) Вот код из книги:
	
	| Код: | 
	| <html>
	<head>
		<title>iRock - Виртуальный любимец Rock</title>
		
<script type="text/javascript">
			function touchRock() {
	var userName = prompt("Как вас зовут?", "Введите ваше имя.");
  		if (userName) {
		alert("Рад вас видеть, " + userName + ".");
		document.getElementById("rockImg").src = "rock_happy.png";
					} 
				}
			setTimeout("document.getElementById('rockImg').src='rock.png';", 300000)
		</script>
</head>
	<body onload="alert('Hello, I am your pet rock.');">
		<div style="margin-top:100px; text-align:center;">
			<img id="rockImg" src="rock.png" alt="iRock" style="cursor:pointer" onclick="touchRock()" />
		</div>
	</body>
</html> | 
	
на картинке rock_happy изображен улыбающийся камень, а на картинке rock изображен одинокий камень.
Я хотел бы у вас спросить как работает код setTimeout , точнее не как, а когда, я вроде никак не активирую эту часть кода, т.к. он не входит в функцию.
2)Вот в другом коде js я видел , что в функции вставляются какие-то параметры и я вообще не понимаю, что это за параметры, для чего они, просто я видел, что в параметры функции вставляют совсем нелогичные для меня слова, которые потом не встречаются в html коде, а только используются посреди функции и тут моя логическая цепочка взрывается.
3)Что делает метод return, я поискал в интернете и меня  совсем не устраивает слова, что return возвращает значение. Какое значение, куда возвращает, что вообще он делает?
Заранее спасибо за помощь.