<!--{
	"Path": "/"
}-->

<div class="left">

<div id="learn">
<img class="icon share" src="/doc/share.png" alt="View full screen" title="View full screen">
<div class="rootHeading">Try Go</div>
<div class="input">
<textarea spellcheck="false" class="code">// You can edit this code!
// Click here and start typing.
package main

import "fmt"

func main() {
	fmt.Println("Hello, 世界")
}</textarea>
</div>
<div class="output">
<pre>
Hello, 世界
</pre>
</div>
<div class="buttons">
<a class="run" href="#" title="Run this code [shift-enter]">Run</a>
<a class="share" href="#" title="Share this code">Share</a>
<a class="tour" href="http://tour.golang.org/" title="Learn Go from your browser">Tour</a>
</div>
<div class="toys">
<select>
	<option value="hello.go">Hello, World!</option>
	<option value="life.go">Conway's Game of Life</option>
	<option value="fib.go">Fibonacci Closure</option>
	<option value="peano.go">Peano Integers</option>
	<option value="pi.go">Concurrent pi</option>
	<option value="sieve.go">Concurrent Prime Sieve</option>
	<option value="solitaire.go">Peg Solitaire Solver</option>
	<option value="tree.go">Tree Comparison</option>
</select>
</div>
</div>

</div>

<div class="right">

<div id="about">
Go is an open source programming environment that makes it easy to build
simple, reliable, and efficient software.
</div>

<div id="gopher"></div>

<a href="/doc/install" id="start">
<span class="big">Download Go</span>
<span class="desc">
Binary distributions available for<br>
Linux, Mac OS X, Windows, and more.
</span>
</a>

</div>

<div style="clear: both"></div>

<div class="left">

<div id="video">
<div class="rootHeading">Featured video</div>
<iframe width="415" height="241" src="http://www.youtube.com/embed/ytEkHepK08c" frameborder="0" allowfullscreen></iframe>
</div>

</div>

<div class="right">

<div id="blog">
<div class="rootHeading">Featured articles</div>
<div class="read"><a href="http://blog.golang.org/">Read more</a></div>
</div>

</div>

<div style="clear: both;"></div>

<script type="text/javascript">

function readableTime(t) {
	var m = ["January", "February", "March", "April", "May", "June", "July",
		"August", "September", "October", "November", "December"];
	var p = t.substring(0, t.indexOf("T")).split("-");
	var d = new Date(p[0], p[1]-1, p[2]);
	return d.getDate() + " " + m[d.getMonth()] + " " + d.getFullYear();
}

function feedLoaded(result) {
	var blog = document.getElementById("blog");
	var read = blog.getElementsByClassName("read")[0];
	for (var i = 0; i < result.length && i < 2; i++) {
		var entry = result[i];
		var title = document.createElement("a");
		title.className = "title";
		title.href = entry.Link;
		title.innerHTML = entry.Title;
		blog.insertBefore(title, read);
		var extract = document.createElement("div");
		extract.className = "extract";
		extract.innerHTML = entry.Summary;
		blog.insertBefore(extract, read);
		var when = document.createElement("div");
		when.className = "when";
		when.innerHTML = "Published " + readableTime(entry.Time);
		blog.insertBefore(when, read);
	}
}

$(function() {
	// Set up playground.
	playground({
		"codeEl":        "#learn .code",
		"outputEl":      "#learn .output",
		"runEl":         "#learn .run",
		"shareEl":       "#learn .share",
		"shareRedirect": "http://play.golang.org/p/",
		"toysEl":        "#learn .toys select"
	});

	// Load blog feed.
	$('<script/>').attr('text', 'text/javascript')
		.attr('src', 'http://blog.golang.org/.json?jsonp=feedLoaded')
		.appendTo('body');
});

</script>
