geode-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mark...@apache.org
Subject [07/13] incubator-geode git commit: GEODE-53 - Applying Apache Geode new website layout
Date Wed, 09 Dec 2015 00:51:16 GMT
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/font/fontawesome-webfont-woff.woff
----------------------------------------------------------------------
diff --git a/font/fontawesome-webfont-woff.woff b/font/fontawesome-webfont-woff.woff
new file mode 100755
index 0000000..b9bd17e
Binary files /dev/null and b/font/fontawesome-webfont-woff.woff differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/getting-started/index.html
----------------------------------------------------------------------
diff --git a/getting-started/index.html b/getting-started/index.html
deleted file mode 100644
index 64e96e4..0000000
--- a/getting-started/index.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<html>
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="chrome=1">
-    <title>Apache Geode (incubating) | Getting Started</title>
-
-    <link rel="stylesheet" href="/stylesheets/styles.css">
-    <link rel="stylesheet" href="/stylesheets/pygment_trac.css">
-    <script src="/javascripts/scale.fix.js"></script>
-    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
-    <script src="/javascripts/master.js"></script>
-    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
-    <link rel="icon" href="/favicon.ico" type="image/x-icon">
-    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
-    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
-
-    <!--[if lt IE 9]>
-    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
-    <![endif]-->
-
-    <script>
-      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-      ga('create', 'UA-61755913-1', 'auto');
-      ga('send', 'pageview');
-
-    </script>
-  </head>
-  <body id='getting-started'>
-    <div id='viewport'>
-      <div class='billboard-bg'></div>
-      <div class='main'>
-        <header>
-          <a id='logo' href='/'></a>
-          <div id='navigation'>
-            <ul>
-              <li id='gettingstartedlink'><a href='/getting-started'>Getting Started</a></li>
-              <li id='communitylink'><a href='/community'>Community</a></li>
-              <li id='contributelink'><a href='/contribute'>Contribute</a></li>
-              <li id='docslink'><a href='/docs'>Docs</a></li>
-              <li id='aboutlink'><a href='/about'>About</a></li>
-              <li id='downloadlink'><a href='/download'>Download</a></li>
-            </ul>
-          </div>
-        </header>
-        <div id='content'>
-            <h1>Getting Started</h1>
-<!-- ##Learn the Basics (Videos) 
-(NOTE: GemFire is a commercial version of Geode)
-
-[Introduction to GemFire](https://s3.amazonaws.com/gemfire-intro/Lesson+00+Introduction.mp4)
-
-[Introduction to GemFire: Architecture and Use Cases](https://s3.amazonaws.com/gemfire-intro/Lesson+01+Gem+Architecture.mp4)
-
-[Introduction to GemFire: Installation and Configuration](https://s3.amazonaws.com/gemfire-intro/Lesson+02+Gem+Install+and+Config.mp4)
-
-[Introduction to GemFire: Tools](https://s3.amazonaws.com/gemfire-intro/Lesson+03+Gem+Tools.mp4)
-
-[Introduction to GemFire: Advanced Features](https://s3.amazonaws.com/gemfire-intro/Lesson+04+Gem+Advance+Features.mp4)
-
-[Introduction to GemFire: Conclusion](https://s3.amazonaws.com/gemfire-intro/Lesson+05+Conclusion.mp4)
-
-
-***
- --><h2>Dive into How Tos</h2>
-<table>
-	<tr>
-		<th>Develop</th>
-		<th>Design</th>
-		<th>Troubleshoot</th>
-	</tr>
-	<tr>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/CacheWriter+and+CacheListener+Best+Practices'>Cache Listeners and Writers</a> </td>
-		<td> Data Architecture in Geode  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/What+To+Monitor'>What to Monitor</a></td>
-	</tr>
-	<tr>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Function+Best+Practices+in+Geode'>Function Best Practices</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Running+in+Embedded+Mode'>Running in Embedded Mode</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Troubleshooting+CPU'>Troubleshooting CPU</a></td>
-	</tr>
-	<tr>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/PDX+Serialization+Internals'>Persistence Best Practices</a>  </td>
-		<td> Client Server Architecture  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Troubleshooting+Disk+Space'>Troubleshooting Disk Space</a></td>
-	</tr>
-	<tr>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/PDX+Serialization+Internals'>PDX Serialization Internals</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Moving+from+memcached+to+gemcached'>Moving from memcached to gemcached</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Troubleshooting+File+Descriptors'>Troubleshooting File Descriptors</a></td>
-	</tr>
-	<tr>
-		<td> Querying Geode  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Sizing+a+Geode+Cluster'>Sizing a Geode Cluster</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Troubleshooting+Garbage+Collection+Pauses'>Troubleshooting Garbage Collection Pauses</a> </td>
-	</tr>
-	<tr>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Debugging+Geode+Applications'>Debugging Geode Applications</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Network+Configuration+Best+Practices'>Network Configuration Best Practices</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Troubleshooting+Heap'>Troubleshooting Heap</a></td>
-	</tr>
-	<tr>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Reliable+Messaging'>Reliable Messaging</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Geode+Security+Framework'>Geode Security Framework</a>  </td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Troubleshooting+Load+Average'>Troubleshooting Load Average</a></td>
-	</tr>
-	<tr>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Resource+Management+in+Geode'>Resource Management in Geode</a>  </td>
-		<td></td>
-		<td> <a href='https://cwiki.apache.org/confluence/display/GEODE/Troubleshooting+Native+Memory'>Troubleshooting Native Memory</a> </td>
-	</tr>
-</table>
-<hr/><h2>Other Resources</h2><h3>Training Materials</h3><p>Geode Introductory Training materials are open source and can be found <a href="https://github.com/project-geode/training">here</a>.</p>
-        </div>
-      </div>
-      <footer id="footer">
-        <div class="container">
-            <ul>
-              <li><a href='http://stackoverflow.com/questions/tagged/geode+or+gemfire'>Stack Overflow</a></li>
-              <li>•</li>
-              <li><a href='https://issues.apache.org/jira/browse/GEODE'>JIRA</a></li>
-              <li>•</li>
-              <li><a href='http://mail-archives.apache.org/mod_mbox/incubator-geode-dev/'>Dev Mailing List</a></li>
-              <li>•</li>
-              <li><a href='https://cwiki.apache.org/confluence/display/GEODE/Index'>Wiki</a></li>
-            </ul>
-            <div class="row">
-                <div class="col-md-4 col-sm-5">
-                    <div class="logo"><a href="#wrapper"><img src="/images/egg-logo1.png"></a></div>
-                </div>
-                <div class="col-md-4 col-sm-4">
-                    <p style="text-align: center">
-                       Apache Geode is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
-                     <p style="text-align: center">
-                        Copyright &copy; <script>var d = new Date();document.write(d.getFullYear());</script> <a href="http://www.apache.org/">The Apache Software Foundation</a>.<br> Apache, Apache Geode (incubating), the Apache feather, Geode logo are trademarks of The Apache Software Foundation. 
-                    </p>
-                </div>
-            </div>
-        </div>
-      </footer>
-    </div>
-  </body>
-</html>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/bg-billboard.png
----------------------------------------------------------------------
diff --git a/images/bg-billboard.png b/images/bg-billboard.png
deleted file mode 100644
index ede5127..0000000
Binary files a/images/bg-billboard.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/bg-crystals-home.png
----------------------------------------------------------------------
diff --git a/images/bg-crystals-home.png b/images/bg-crystals-home.png
deleted file mode 100644
index 610ba5c..0000000
Binary files a/images/bg-crystals-home.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/bg-crystals-secondary.png
----------------------------------------------------------------------
diff --git a/images/bg-crystals-secondary.png b/images/bg-crystals-secondary.png
deleted file mode 100644
index 3cb884d..0000000
Binary files a/images/bg-crystals-secondary.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/egg-logo1.png
----------------------------------------------------------------------
diff --git a/images/egg-logo1.png b/images/egg-logo1.png
deleted file mode 100644
index c04e70d..0000000
Binary files a/images/egg-logo1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/events/apachecon.png
----------------------------------------------------------------------
diff --git a/images/events/apachecon.png b/images/events/apachecon.png
deleted file mode 100644
index 2f267a9..0000000
Binary files a/images/events/apachecon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/events/oscon.png
----------------------------------------------------------------------
diff --git a/images/events/oscon.png b/images/events/oscon.png
deleted file mode 100644
index bd9e507..0000000
Binary files a/images/events/oscon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/geode-banner.png
----------------------------------------------------------------------
diff --git a/images/geode-banner.png b/images/geode-banner.png
deleted file mode 100644
index cc7bda3..0000000
Binary files a/images/geode-banner.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/logo-apache-geode-white.png
----------------------------------------------------------------------
diff --git a/images/logo-apache-geode-white.png b/images/logo-apache-geode-white.png
deleted file mode 100644
index eb4f75f..0000000
Binary files a/images/logo-apache-geode-white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/logo-apache-geode.png
----------------------------------------------------------------------
diff --git a/images/logo-apache-geode.png b/images/logo-apache-geode.png
deleted file mode 100644
index e23de39..0000000
Binary files a/images/logo-apache-geode.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/logo-geode-white.png
----------------------------------------------------------------------
diff --git a/images/logo-geode-white.png b/images/logo-geode-white.png
deleted file mode 100644
index 8a27256..0000000
Binary files a/images/logo-geode-white.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/images/logo-geode.png
----------------------------------------------------------------------
diff --git a/images/logo-geode.png b/images/logo-geode.png
deleted file mode 100644
index 742d91d..0000000
Binary files a/images/logo-geode.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/img/apache_geode_logo.png
----------------------------------------------------------------------
diff --git a/img/apache_geode_logo.png b/img/apache_geode_logo.png
new file mode 100644
index 0000000..14b6ac0
Binary files /dev/null and b/img/apache_geode_logo.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/img/apache_geode_logo_white.png
----------------------------------------------------------------------
diff --git a/img/apache_geode_logo_white.png b/img/apache_geode_logo_white.png
new file mode 100644
index 0000000..2a0cda8
Binary files /dev/null and b/img/apache_geode_logo_white.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/img/apache_geode_logo_white_small.png
----------------------------------------------------------------------
diff --git a/img/apache_geode_logo_white_small.png b/img/apache_geode_logo_white_small.png
new file mode 100644
index 0000000..bf8aaa0
Binary files /dev/null and b/img/apache_geode_logo_white_small.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/img/check_flat/default.png
----------------------------------------------------------------------
diff --git a/img/check_flat/default.png b/img/check_flat/default.png
new file mode 100755
index 0000000..5a89765
Binary files /dev/null and b/img/check_flat/default.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/img/egg-logo.png
----------------------------------------------------------------------
diff --git a/img/egg-logo.png b/img/egg-logo.png
new file mode 100644
index 0000000..2169a2a
Binary files /dev/null and b/img/egg-logo.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/img/github.png
----------------------------------------------------------------------
diff --git a/img/github.png b/img/github.png
new file mode 100644
index 0000000..f19ee0d
Binary files /dev/null and b/img/github.png differ

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index dfeddc2..a9d3425 100644
--- a/index.html
+++ b/index.html
@@ -1,144 +1,295 @@
-<html>
-  <head>
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
     <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="chrome=1">
-    <title>Apache Geode (incubating) | Home</title>
-
-    <link rel="stylesheet" href="/stylesheets/styles.css">
-    <link rel="stylesheet" href="/stylesheets/pygment_trac.css">
-    <script src="/javascripts/scale.fix.js"></script>
-    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
-    <script src="/javascripts/master.js"></script>
-    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
-    <link rel="icon" href="/favicon.ico" type="image/x-icon">
-    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
-    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+    <title>Apache Geode (incubating) — Performance is key. Consistency is a must.</title>
+    <meta http-equiv="x-ua-compatible" content="ie=edge" />
+    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" />
+    <meta name="keywords" content="Apache Geode, Geode, GemFire, In-memory, IMDB, IMDG, cache">
+    <meta name="description" content="Apache Geode is a distributed, in-memory database with strong data consistency, built to support transactional applications with low latency and high concurrency needs." />
+    <meta property="og:title" content="Apache Geode (incubating)" />
+    <meta property="og:description" content="Apache Geode is a distributed, in-memory database with strong data consistency, built to support transactional applications with low latency and high concurrency needs." />
+    <!-- Loading Typekit -->
+    <script type="text/javascript" src="//use.typekit.net/ddl7izx.js"></script>
+    <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+    <!-- Place this tag right after the last button or just before your close body tag. -->
+    <script async defer id="github-bjs" src="https://buttons.github.io/buttons.js"></script>
+        <!-- Loading Bootstrap -->
+    <link href="/bootstrap/bootstrap.min.css" rel="stylesheet" type='text/css'>
+    <link href="/css/bootflat.css" rel="stylesheet" type='text/css'>
+    <link href="/css/geode-site.css" rel="stylesheet" type='text/css'>
+    <link href="https://fonts.googleapis.com/css?family=Open+Sans:200,400,500,300,600,800,700,400italic,600italic,700italic,800italic,300italic" rel="stylesheet" type="text/css">
+    <link href="/css/font-awesome.min.css" rel="stylesheet" type='text/css'>
+
+    
 
+    <!-- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. -->
     <!--[if lt IE 9]>
-    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+      <script src="js/html5shiv.js"></script>
+      <script src="js/respond.min.js"></script>
     <![endif]-->
+</head>
+<body>
 
-    <script>
-      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
-      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
-      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
-      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
-
-      ga('create', 'UA-61755913-1', 'auto');
-      ga('send', 'pageview');
-
-    </script>
-  </head>
-  <body id='home'>
-    <div id='viewport'>
-      <div class='billboard-bg'></div>
-      <div class='main'>
-        <header>
-          <a id='logo' href='/'></a>
-          <div id='navigation'>
-            <ul>
-              <li id='gettingstartedlink'><a href='/getting-started'>Getting Started</a></li>
-              <li id='communitylink'><a href='/community'>Community</a></li>
-              <li id='contributelink'><a href='/contribute'>Contribute</a></li>
-              <li id='docslink'><a href='/docs'>Docs</a></li>
-              <li id='aboutlink'><a href='/about'>About</a></li>
-              <li id='downloadlink'><a href='/download'>Download</a></li>
+    <header class="navbar navbar-inverse navbar-fixed-top bf-docs-nav " role="banner">
+    <div class="container">
+        <div class="navbar-header">
+            <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bf-navbar-collapse">
+                <span class="sr-only">Toggle navigation</span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+                <span class="icon-bar"></span>
+            </button>
+        </div>
+        <a href="/" class="navbar-brand">
+                <img id="home-logo" src="/img/apache_geode_logo_white_small.png" />
+            </a>
+        <nav class="collapse navbar-collapse bf-navbar-collapse" role="navigation">
+            <ul class="nav navbar-nav navbar-right">
+                <li class=""><a href="/community/"><span class="icns icon-group"></span></a></li>
+                <li><a href="http://geode.docs.pivotal.io" target="_blank"><span class="icns icon-book"></span></a></li>
+                <li><a href="http://github.com/apache/incubator-geode" target="_blank"><span class="icns icon-github-sign"></span></a></li>
+                <!--<li><a href="https://trello.com/b/exQmJIOn/usergrid" target="_blank"><span class="icns icon-trello"></span></a></li>-->
+                <li><a href="https://issues.apache.org/jira/browse/GEODE/"
+                       target="_blank"><span class="icns icon-bug"></span></a></li>
+                <li><a href="http://stackoverflow.com/search?q=Apache%20Geode" target="_blank"><span class="icns icon-stackexchange"></span></a></li>
+                <li><a href="/community/#mailing-lists"><span class="icns icon-envelope"></span></a></li>
+                <!-- <li><a href="/community/#live"><span class="icns icon-comments"></span></a></li> -->
+                <li><a href="https://twitter.com/apachegeode" target="_blank"><span class="icns icon-twitter"></span></a></li>
+                <li><a href="https://cwiki.apache.org/confluence/display/geode/" target="_blank"><span class="icns icon-edit"></span></a></li>
+                <li><a href="/releases/"><span class="icns icon-releases"></span></a></li>
             </ul>
+        </nav>
+    </div>
+    </header>
+
+
+
+
+
+<section class="bf-masthead" id="content" role="main">
+    <div class="bf-masthead-bg">
+        <div class="container">
+            <img class="logo-title img-responsive hidden-xs" src="img/apache_geode_logo.png" />
+            <div class="text-container">
+                <h2 class="tagline"><em>Performance</em> is key. <em>Consistency</em> is a must.</h2>
+                <p class="description">Solving low latency data management problems at very high concurrency since 2002.<br/>
+                  <br/>Build high-speed, data-intensive applications that elastically meet performance requirements at any scale.<br/>
+                  Take advantage of Apache Geode's unique technology that blends advanced techniques for data replication, partitioning and distributed processing.
+
+                  <br/><br/>
+                  Apache Geode provides a database-like consistency model, reliable transaction processing and a shared-nothing architecture to maintain very low latency performance with high concurrency processing.<br/></p>
+            </div>
+
+            <div class="btn-wrapper">
+                <!-- Place this tag where you want the button to render. -->
+              <a class="github-button" href="https://github.com/apache/incubator-geode" data-icon="octicon-star" data-style="mega" data-count-href="/apache/incubator-geode/stargazers" data-count-api="/repos/apache/incubator-geode#stargazers_count" data-count-aria-label="# stargazers on GitHub" aria-label="Star apache/incubator-geode on GitHub">Star</a>
+              <a class="github-button" href="https://github.com/apache/incubator-geode/fork" data-icon="octicon-repo-forked" data-style="mega" data-count-href="/apache/incubator-geode/network" data-count-api="/repos/apache/incubator-geode#forks_count" data-count-aria-label="# forks on GitHub" aria-label="Fork apache/incubator-geode on GitHub">Fork</a>
+              <a class="github-button" href="https://github.com/apache/incubator-geode" data-icon="octicon-eye" data-style="mega" data-count-href="/apache/incubator-geode/watchers" data-count-api="/repos/apache/incubator-geode#subscribers_count" data-count-aria-label="# watchers on GitHub" aria-label="Watch apache/incubator-geode on GitHub">Watch</a>
+              <!--<p><span class="or">or</span> <a href="#">Download Geode</a></p>-->
+            </div>
+        </div>
+    </div>
+</section>
+
+<section class="bf-features">
+    <div class="container">
+        <div class="row">
+            <div class="col-md-4">
+                <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-sitemap"></i></div>
+                <h3>Replication and Partitioning</h3>
+                <p>Data can easily be partitioned (sharded) or replicated between nodes allowing performance to scale as needed. Durability is ensured through redundant in-memory copies and disk-based persistence.</p>
+            </div>
+            <div class="col-md-4">
+                <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-hdd"></i></div>
+                <h3>Persistence</h3>
+                <p>Super fast write-ahead-logging (WAL) persistence with a shared-nothing architecture that is optimized for fast parallel recovery of nodes or an entire cluster.</p>
+            </div>
+            <div class="col-md-4">
+                <div class="bf-icon-wrap"><i aria-hidden="true" class="icon-rocket"></i></div>
+                <h3>Performance</h3>
+                <p>Linear-scaling low latency for transactions, reads, writes and query processing of indexed or unindexed data.</p>
+            </div>
+        </div>
+        <div class="row">
+            <div class="col-md-4">
+                <div class="bf-icon-wrap" style="font-size:40px; vertical-align: 15px;"><i aria-hidden="true" class="icon-fast-forward"></i><i aria-hidden="true" class="icon-dashboard"></i></div>
+                <h3>In-Memory Storage</h3>
+                <p>Blazing fast in-memory storage optimized for large heaps, with the option of using off-heap storage, compression and features such as disk-overflow, eviction and expiration of data.</p>
+            </div>
+            <div class="col-md-4">
+                <div class="bf-icon-wrap"><span style="font-size:60px" aria-hidden="true" class="icon-cogs"></span></div>
+                <h3>Functions</h3>
+                <p>Distributed location-aware user functions can be deployed and executed by the same nodes storing relevant sharded data for fast parallel processing. Failed operations can be retried on replicant nodes.</p>
+            </div>
+            <div class="col-md-4">
+                <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-credit-card"></i></div>
+                <h3>Transactions</h3>
+                <p>ACID distributed transactions support efficient and safe coordinated operations on colocated data. Transactions can be initiated or suspended by either a client or a server.</p>
+            </div>
+        </div>
+        <div class="row">
+          <div class="col-md-4">
+              <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-table"></i></div>
+              <h3>OQL and Indexes</h3>
+              <p>Object Query Language allows distributed query execution on hot and cold data, with SQL-like capabilities, including joins.<br/>
+              Multiple kinds of indexes can be defined and consistently maintained across the cluster.</p>
+          </div>
+          <div class="col-md-4">
+              <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-bolt"></i></div>
+              <h3>Events</h3>
+              <p>Clients can be notified about server-side data events, and servers can react synchronously or asynchronously with guaranteed delivery of ordered events.</p>
+          </div>
+          <div class="col-md-4">
+              <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="icon-cloud"></i></div>
+              <h3>Clustering</h3>
+              <p>Highly scalable, robust advanced clustering technology with failure detection, dynamic scaling, and network-partition detection algorithms.</p>
           </div>
-        </header>
-        <div id='content'>
-            <div class='billboard-home'>
-	<div class='inner'>
-		<h1>Performance is key. Consistency is a must.</h1>
-		<div class='intro'><h3>Geode is an open source, distributed, in-memory database for scale-out applications.</h3></div>
-	</div>
-</div>
-<div class='benefits'>
-	<div class='container'>
-		<div class='benefit'>
-			<h2>Elastic performance</h2>
-			<p>All data is stored in-memory for low latency. Performance scales linearly as nodes are added. Data is distributed automatically between nodes to optimize performance.</p>
-		</div>
-		<div class='benefit'>
-			<h2>Database consistency</h2>
-			<p>Data is persisted in write-optimized disk storage. Consistency checking is configurable between highest performance caching and ACID transactions.</p>
-		</div>
-		<div class='benefit'>
-			<h2>Resilient clustering</h2>
-			<p>Clusters fail-over to other nodes in case of failures, and rebalance remaining resources. Clusters self-heal when nodes return to operation.</p>
-		</div>
-	</div>
-</div>
-<div class='nextsteps'>
-	<div class='container'>
-		<div class='nextstep'>
-			<h3>Community</h3>
-			<p>
-				To get in touch with other users and contributors of the Apache Geode (incubating) community:
-			</p>
-			<p>
-				Contributors: <a href="http://mail-archives.apache.org/mod_mbox/incubator-geode-dev/">dev@geode.incubator.apache.org</a>
-                            (<a href="mailto:dev-subscribe@geode.incubator.apache.org">subscribe</a>,
-                            <a href="mailto:dev-unsubscribe@geode.incubator.apache.org"> unsubscribe</a>, <a href="http://mail-archives.apache.org/mod_mbox/incubator-geode-dev/"> archive</a>)
-   			<br>
-				JIRA notifications: <a href="http://mail-archives.apache.org/mod_mbox/incubator-geode-issues/">issues@geode.incubator.apache.org</a>
-                            (<a href="mailto:issues-subscribe@geode.incubator.apache.org">subscribe</a>, 
-                            <a href="mailto:issues-unsubscribe@geode.incubator.apache.org"> unsubscribe</a>, <a href="http://mail-archives.apache.org/mod_mbox/incubator-geode-issues/"> archive</a>)
-				<br>
-				Commits: <a href="http://mail-archives.apache.org/mod_mbox/incubator-geode-commits/">commits@geode.incubator.apache.org</a>
-                            (<a href="mailto:commits-subscribe@geode.incubator.apache.org">subscribe</a>, <a href="mailto:commits-unsubscribe@geode.incubator.apache.org"> unsubscribe</a>,<a href="http://mail-archives.apache.org/mod_mbox/incubator-geode-commits/"> archive</a>)
-				<br>
-				User questions at <a href="http://stackoverflow.com/questions/tagged/geode+or+gemfire" target="_blank">Stack Overflow</a>
-				<br>
-				We use the <a href="https://issues.apache.org/jira/browse/GEODE" target="_blank">Apache Geode JIRA for issue tracking</a>
-				<br>
-				For other ways to contribute, see the <a href="/community/">Apache Geode (incubating) community page</a>
-			</p>
-                </div>
-		<div class='nextstep'>
-	    <h3>Contributors</h3>
-			
-			<p>Development on the code base for Geode was started in 2002 as the commercial product GemFire. The open source version of Geode was released in April, 2015. Primary committers include members of the GemFire engineering team, customers, and ASF members.</p>
-
-			<p>If you'd like to participate in Apache Geode (incubating), <a href ="/contribute">learn how to contribute.</a></p>
-		</div>
-		<div class='nextstep'>
-	    <h3>Getting Started</h3>
-	    <p>
-	    	Read the <a href='https://cwiki.apache.org/confluence/display/GEODE/Index#Index-Geodein5minutes'>quick start guide</a>.
-	    	<br>
-				Check out the <a href='/getting-started/'>Getting Started</a> page.
-			</p>
-		</div>
-	</div>
-</div>
         </div>
-      </div>
-      <footer id="footer">
-        <div class="container">
-            <ul>
-              <li><a href='http://stackoverflow.com/questions/tagged/geode+or+gemfire'>Stack Overflow</a></li>
-              <li>•</li>
-              <li><a href='https://issues.apache.org/jira/browse/GEODE'>JIRA</a></li>
-              <li>•</li>
-              <li><a href='http://mail-archives.apache.org/mod_mbox/incubator-geode-dev/'>Dev Mailing List</a></li>
-              <li>•</li>
-              <li><a href='https://cwiki.apache.org/confluence/display/GEODE/Index'>Wiki</a></li>
-            </ul>
-            <div class="row">
-                <div class="col-md-4 col-sm-5">
-                    <div class="logo"><a href="#wrapper"><img src="/images/egg-logo1.png"></a></div>
-                </div>
-                <div class="col-md-4 col-sm-4">
-                    <p style="text-align: center">
-                       Apache Geode is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
-                     <p style="text-align: center">
-                        Copyright &copy; <script>var d = new Date();document.write(d.getFullYear());</script> <a href="http://www.apache.org/">The Apache Software Foundation</a>.<br> Apache, Apache Geode (incubating), the Apache feather, Geode logo are trademarks of The Apache Software Foundation. 
-                    </p>
+    </div>
+
+    </div>
+</section>
+
+<section class="bf-questions">
+    <div class="container">
+            <div class="col-md-12 text-center cta">
+                And much more... Interested? You can check our <a href="https://cwiki.apache.org/confluence/display/GEODE/Index#Index-Geodein5minutesGeodein5minutes" target="_blank" class="btn btn-inverse btn-lg">Geode in 5 minutes tutorial</a> <span class="avoidwrap">, ask a question on the <a href="/community/" class="btn btn-inverse btn-lg">Mailing lists</a> or <a href="http://stackoverflow.com/search?q=Apache%20Geode" class="btn btn-inverse btn-lg">StackOverflow</a></span>
+            </div>
+    </div>
+</section
+
+<section class="bf-news">
+    <div class="container">
+
+        <div class="row">
+            <div class="col-md-12 text-left">
+                <h2>About the Project</h2>
+                <p>Apache Geode is a data management platform that provides real-time, consistent access to data-intensive applications throughout widely distributed cloud architectures.</p>
+
+                <p>By pooling memory, CPU, network resources, and (optionally) local disk across multiple processes to manage application objects and behavior, it uses dynamic replication and data partitioning techniques to implement high availability, improved performance, scalability, and fault tolerance. In addition to being a distributed data container, Apache Geode is an in-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.</p>
+
+                <p>Apache Geode is a mature, robust technology originally developed by GemStone Systems in Beaverton, Oregon.
+Commercially available as GemFire™, the technology was first widely deployed in the financial sector as the transactional, low-latency data engine used
+in Wall Street trading platforms.
+Today Apache Geode is used by over 600 enterprise customers for high-scale business applications that must meet low latency and 24x7 availability requirements.</p>
+
+                <p>This project is undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p>
+            </div>
+            <!--
+            <div class="col-md-4 text-left">
+                <h2>Recent Releases</h2>
+
+
+            </div>
+            -->
+        </div>
+
+    </div>
+</section>
+
+
+
+
+<footer class="bf-footer" role="contentinfo">
+    <div class="container">
+        <div class="row">
+            <div class="col-md-2">
+                <ul class="nav nav-list">
+                    <li class="nav-header"><a href="/">Home</a></li>
+                    <li class="nav-header"><a href="/community/">Community</a></li>
+                        <li><a href="/community/#events">Events</a></li>
+                        <li><a href="/community/#mailing-lists">Mailing Lists</a></li>
+                        <li><a href="/community/#deployments">Deployments</a></li>
+                        <!-- <li><a href="/community/#committers">Commiters</a></li> -->
+                </ul>
+            </div>
+            <div class="col-md-2">
+                <ul class="nav nav-list">
+                    <li class="nav-header"><a href="http://github.com/apache/incubator-geode" target="_blank">Code</a></li>
+                    <li><a href="https://cwiki.apache.org/confluence/display/GEODE/Project+Proposals+and+Specifications" target="_blank">Specifications</a></li>
+                    <li><a href="https://cwiki.apache.org/confluence/display/GEODE/Geode+Internal+Architecture" target="_blank">Internal Architecture</a></li>
+                    <li><a href="https://cwiki.apache.org/confluence/display/GEODE/Writing+tests" target="_blank">Writing Tests</a></li>
+                    <li><a href="https://cwiki.apache.org/confluence/display/GEODE/Criteria+for+Code+Submissions" target="_blank">Code Submissions</a></li>
+                </ul>
+            </div>
+            <div class="col-md-2">
+                <ul class="nav nav-list">
+                    <li class="nav-header">Resources</li>
+                    <li><a href="http://github.com/apache/geode-incubator" target="_blank">GitHub Code</a></li>
+                    <li><a href="http://geode.docs.pivotal.io" target="_blank">Docs</a></li>
+                    <li><a href="https://issues.apache.org/jira/browse/GEODE" target="_blank">JIRA Bug Tracker</a></li>
+                    <li><a href="http://stackoverflow.com/search?q=Apache%20Geode" target="_blank">StackOverflow</a></li>
+                    <li><a href="/community/#live">Live Chat</a></li>
+                    <li><a href="https://twitter.com/apachegeode" target="_blank">Twitter</a></li>
+                    <li><a href="https://cwiki.apache.org/confluence/display/GEODE/Index#Index-Geodein5minutesGeodein5minutes" target="_blank">Geode in 5 minutes</a></li>
+                    <li><a href="https://cwiki.apache.org/confluence/display/GEODE/How+to+Contribute" target="_blank">How to Contribute</a></li>
+                    <li><a href="https://cwiki.apache.org/confluence/display/GEODE/Application+Development" target="_blank">Application Development</a></li>
+
+                    <li><a href="https://cwiki.apache.org/confluence/display/GEODE/Technology+FAQ" target="_blank">FAQ</a></li>
+
+                </ul>
+            </div>
+            <div class="col-md-2">
+                <ul class="nav nav-list">
+                    <li class="nav-header">Apache</li>
+                    <li><a href="http://www.apache.org/licenses/" target="_blank">License</a></li>
+                    <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li>
+                    <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
+                    <li><a href="http://www.apache.org/security/">Security</a></li>
+                    <li><a href="http://www.apache.org/" target="_blank">Apache Foundation</a></li>
+                </ul>
+            </div>
+            <div class="col-md-4">
+              <a class="twitter-timeline" href="https://twitter.com/search?q=%23ApacheGeode%20OR%20Apache%20Geode" data-widget-id="665030887004725248">Tweets about #ApacheGeode OR Apache Geode</a>
+<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
+            </div>
+        <!--
+            <div class="col-md-4">
+                <div class="input-group form-search">
+                    <input type="text" class="form-control search-query">
+                    <span class="input-group-btn">
+                        <button type="submit" class="btn btn-primary" data-type="last">Search</button>
+                    </span>
                 </div>
+            </div> -->
+        </div>
+        <div class="row">
+          <center>
+            <div id="copyright">
+                <a href="http://incubator.apache.org" target="_blank"><img src="/img/egg-logo.png" /></a><br/><br/>
+                <p class="credits">
+                Apache Geode is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
+                </p>
+                <p>Copyright © 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.<br>
+                Apache, Apache Geode (incubating), and the Apache feather logos are trademarks of The Apache Software Foundation.</p>
+                <p>Site designed & assembled with love by <a href="https://github.com/ryuneeee">@ryuneeee</a> + <a href="https://github.com/realbeast">@realbeast</a> + <a href="https://twitter.com/timanglade">@timanglade</a> + <a href="https://twitter.com/snoopdave">@snoopdave</a> for Apache Usergrid.</p>
+                <p>Modified for Apache Geode by <a href="https://twitter.com/william_markito">@william_markito</a>.</p>
             </div>
+          </center>
         </div>
-      </footer>
     </div>
-  </body>
+</footer>
+
+<script type="text/javascript" src="/js/head.js"></script>
+<script type="text/javascript">
+    head.js("/js/jquery-1.10.1.min.js", "/js/bootstrap.min.js", "/js/usergrid-site.js");
+</script>
+<!-- update the code below for google analytics -->
+<!--
+ <script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-45815079-1', 'apache.org');
+  ga('send', 'pageview');
+
+</script> -->
+
+
+
+</body>
 </html>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/javascripts/feeds.js
----------------------------------------------------------------------
diff --git a/javascripts/feeds.js b/javascripts/feeds.js
deleted file mode 100644
index bbe5e43..0000000
--- a/javascripts/feeds.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function loadFeedControl() {
-  var feed = "https://www.google.com/calendar/feeds/gejamo1ppmtohgneonsen1a9vc%40group.calendar.google.com/public/basic?"+new Date().getTime();
-  var fg = new GFdynamicFeedControl(feed, "calendar");
-}
-google.load("feeds", "1");
-google.setOnLoadCallback(loadFeedControl);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/11710481/javascripts/gfdynamicfeedcontrol-modified.js
----------------------------------------------------------------------
diff --git a/javascripts/gfdynamicfeedcontrol-modified.js b/javascripts/gfdynamicfeedcontrol-modified.js
deleted file mode 100644
index 48e0369..0000000
--- a/javascripts/gfdynamicfeedcontrol-modified.js
+++ /dev/null
@@ -1,883 +0,0 @@
-/**
- * Copyright (c) 2008 Google Inc.
- *
- * You are free to copy and use this sample.
- * License can be found here: http://code.google.com/apis/ajaxsearch/faq/#license
-*/
-
-/**
- * @fileoverview A feed gadget based on the AJAX Feed API.
- * @author dcollison@google.com (Derek Collison)
- */
-
-/**
- * GFdynamicFeedControl
- * @param {string} feed The feed URL.
- * @param {String|Object} container Either the id string or the element itself.
- * @param {Object} options Options map.
- * @constructor
- */
-
-
-function GFdynamicFeedControl(feedUrls, container, options) {
-  // node elements.
-  this.nodes = {};
-  this.collapseElements = [];
-  
-  // the feeds.
-  this.feeds = [];
-  this.results = [];
-
-  if (typeof feedUrls == 'string') {
-    this.feeds.push({url:feedUrls});
-  } else if (typeof feedUrls == 'object') {
-    for (var i=0; i<feedUrls.length; i++) {
-      var entry = feedUrls[i];
-      var o = {};
-      var feedUrl;
-      if (typeof entry == 'string') {
-        o.url = feedUrls[i];
-      } else if (typeof entry == 'object') {
-        o = feedUrls[i];
-  if (o && o.title) {
-    var s = o.title;
-    o.title = s.replace(/</g,'&lt;').replace(/>/g, '&gt;');
-  }
-      }
-      this.feeds.push(o);
-    }
-  }
-
-  if (typeof container == "string") {
-    container = document.getElementById(container);
-  }
-  this.parseOptions_(options);
-  this.setup_(container);
-}
-
-/*
- * Default time in milliseconds for the feed to be reloaded.
- * @type Number
- */
-GFdynamicFeedControl.DEFAULT_NUM_RESULTS = 4;
-/*
- * Default time in milliseconds for the feed to be reloaded.
- * @type Number
- */
-GFdynamicFeedControl.DEFAULT_FEED_CYCLE_TIME = 1800000;
-/*
- * Default display time in milliseconds for each entry.
- * @type Number
- */
-GFdynamicFeedControl.DEFAULT_DISPLAY_TIME = 5000000;
-/*
- * Default fadeout transition time in milliseconds for each entry.
- * @type Number
- */
-GFdynamicFeedControl.DEFAULT_FADEOUT_TIME = 1000;
-/*
- * Default time between transition steps in milliseconds
- * @type Number
- */
-GFdynamicFeedControl.DEFAULT_TRANSISTION_STEP = 40;
-/*
- * Default hover time in milliseconds for each entry.
- * @type Number
- */
-GFdynamicFeedControl.DEFAULT_HOVER_TIME = 100;
-
-/**
- * Setup default option map and apply overrides from constructor.
- * @param {Object} options Options map.
- * @private
- */
-GFdynamicFeedControl.prototype.parseOptions_ = function(options) {
-  // Default Options
-  // TODO(dcollison) - implement Feed Cycle.
-  this.options = {
-    numResults : GFdynamicFeedControl.DEFAULT_NUM_RESULTS,
-    feedCycleTime : GFdynamicFeedControl.DEFAULT_FEED_CYCLE_TIME,
-    linkTarget : google.feeds.LINK_TARGET_BLANK,
-    displayTime : GFdynamicFeedControl.DEFAULT_DISPLAY_TIME,
-    transitionTime : GFdynamicFeedControl.DEFAULT_TRANSISTION_TIME,
-    transitionStep : GFdynamicFeedControl.DEFAULT_TRANSISTION_STEP,
-    fadeOutTime: GFdynamicFeedControl.DEFAULT_FADEOUT_TIME,
-    scrollOnFadeOut : true,
-    pauseOnHover : false,
-    hoverTime : GFdynamicFeedControl.DEFAULT_HOVER_TIME,
-    autoCleanup : true,
-    transitionCallback : null,
-    feedTransitionCallback : null,
-    feedLoadCallback : null,
-    collapseable : false,
-    sortByDate : false,
-    horizontal : false,
-    stacked : false,
-    title : null
-  };
-
-  if (options) {
-    for (var o in this.options) {
-      if (typeof options[o] != 'undefined') {
-        this.options[o] = options[o];
-      }
-    }
-  }
-  
-  // Cant be collapseable unless stacked
-  if(!this.options.stacked) {
-    this.options.collapseable = false;
-  }
-  
-  // Override strange/bad options
-  this.options.displayTime = Math.max(200, this.options.displayTime);
-  this.options.fadeOutTime = Math.max(0, this.options.fadeOutTime);
-
-  // Calculated
-  var ts = this.options.fadeOutTime / this.options.transitionStep;
-  this.fadeOutDelta = Math.min(1, (1.0/ts));
-
-  // Flag to start
-  this.started = false;
-};
-
-/**
- * Basic setup.
- * @private
- */
-GFdynamicFeedControl.prototype.setup_ = function(container) {
-  if (container == null) return;
-  this.nodes.container = container;
-
-  // Browser fun.
-  if (window.ActiveXObject) {
-    this.ie = this[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true;
-  } else if (document.childNodes && !document.all && !navigator.taintEnabled) {
-    this.safari = true;
-  } else if (document.getBoxObjectFor != null) {
-    this.gecko = true;
-  }
-  // The feedControl instance for generating entry HTML.
-  this.feedControl = new google.feeds.FeedControl();
-  this.feedControl.setLinkTarget(this.options.linkTarget);
-
-  // The feeds
-  this.expected = this.feeds.length;
-  this.errors = 0;
-
-  for (var i = 0; i < this.feeds.length; i++) {
-    var feed = new google.feeds.Feed(this.feeds[i].url);
-    feed.setResultFormat(google.feeds.Feed.JSON_FORMAT);
-    feed.setNumEntries(this.options.numResults);
-    feed.load(this.bind_(this.feedLoaded_, i));
-  }
-};
-
-/**
- * Helper method to bind this instance correctly.
- * @param {Object} method function/method to bind.
- * @return {Function}
- * @private
- */
-GFdynamicFeedControl.prototype.bind_ = function(method) {
-  var self = this;
-  var opt_args = [].slice.call(arguments, 1);
-  return function() {
-    var args = opt_args.concat([].slice.call(arguments));
-    return method.apply(self, args);
-  }
-};
-
-/**
- * Callback associated with the AJAX Feed api after load.
- * @param {Object} result Loaded result.
- * @private
- */
-GFdynamicFeedControl.prototype.feedLoaded_ = function(index, result) {
-  if (this.options.feedLoadCallback) {
-    this.options.feedLoadCallback(result);
-  }
-  if (result.error) {
-    // Ignore failed feeds for the most part.
-    // The user has control through the feedLoadCallback above
-    // if they choose to do something more createive.
-    // Only complain if we can't load anything.
-    if (++this.errors >= this.expected) {
-      this.nodes.container.innerHTML = 'Feed' + ((this.expected > 1)?'s ':' ') +
-                                       'could not be loaded.';
-    }
-    return;
-  }
-  // Override of title option.
-  if (this.feeds[index].title) {
-    result.feed.title = this.feeds[index].title;
-  }
-  this.results.push(result);
-
-  if (!this.started) {
-    this.createSubContainers_();
-    this.displayResult_(0);
-  } else if (!this.options.horizontal && this.options.stacked) {
-    this.addResult_(this.results.length-1);
-  }
-};
-
-/**
- * Insert blog in correct place
- * @private
- */
-GFdynamicFeedControl.prototype.sortByDate_ = function(resultIndex, newTitle,
-                                                      newList) {
-  // if sorting by date, insert it into the correct spot
-  var newEntryDate = this.results[resultIndex].feed.entries[0].publishedDate;
-  var newEntryDateMS = Date.parse(newEntryDate);
-  var insertIndex = null;
-
-  for (var i = 0; i < this.results.length; i++) {
-    var mostRecentPost = this.results[i].feed.entries[0].publishedDate;
-    var mostRecentPostMS = Date.parse(mostRecentPost);
-    if(newEntryDateMS > mostRecentPostMS) {
-      insertIndex = i;
-      break;
-    }
-  }
-
-  // If it's most stale blog, just append as usual
-  if(insertIndex == null) {
-    this.nodes.root.appendChild(newTitle);
-    this.nodes.root.appendChild(newList);
-    this.createListEntries_(resultIndex, newList);
-    return;
-  }
-
-  // If it is fresher than a blog, insert to correct position
-  var insertBeforeIndex = 2 + (insertIndex * 2);
-  var swapToIndex = insertBeforeIndex + 2;
-  var tempSwap = null;
-  var myResultIndex = resultIndex + 1;
-
-  var sectionsToChange = this.nodes.root.childNodes;
-  var nodeToInsertBefore = sectionsToChange[insertBeforeIndex];
-
-  this.nodes.root.insertBefore(newTitle, nodeToInsertBefore);
-  this.nodes.root.insertBefore(newList, nodeToInsertBefore);
-
-  this.results.splice(insertIndex, 0, this.results[resultIndex]);
-  this.results.splice(myResultIndex, 1);
-  
-  var nodesToChangeClick = sectionsToChange[swapToIndex].nextSibling.childNodes;
-  
-  this.createListEntries_(insertIndex, newList);
-
-  // Keep freshest blog open first
-  if(insertIndex == 0) {
-    this.displayResult_(0);
-  }
-
-  insertIndex += 1;
-  // Reset all of the onmousehover listeners to highlight corect index
-  for (var i = swapToIndex; i < sectionsToChange.length; i += 2) {
-    var nodesToChangeClick = sectionsToChange[i].nextSibling.childNodes;
-    for (var j=0; j < nodesToChangeClick.length; j++) {
-      nodesToChangeClick[j].onmouseover = this.bind_(this.listMouseOver_, 
-                                                     insertIndex, j);
-      nodesToChangeClick[j].onmouseout = this.bind_(this.listMouseOut_, 
-                                                    insertIndex, j);
-    }
-    insertIndex++;
-  }
-};
-
-/**
- * Setup to display the Result for stacked mode
- * @private
- */
-GFdynamicFeedControl.prototype.addResult_ = function(resultIndex) {
-  var result = this.results[resultIndex];
-  var newTitle = this.createDiv_('gfg-subtitle');
-  this.setTitle_(result.feed, newTitle);
-  var newList = this.createDiv_('gfg-list');
-
-  // add a collapseable button
-  if(this.options.collapseable) {
-    var collapseLink = document.createElement('div');
-    newList.style.display = 'none';
-    collapseLink.className = 'gfg-collapse-closed';
-    newTitle.appendChild(collapseLink);
-    collapseLink.onclick = this.toggleCollapse(this, newList, collapseLink);
-    this.collapseElements.push({
-      list : newList,
-      collapse : collapseLink
-    });
-  }
-
-
-  var clearFloat = document.createElement('div');
-  clearFloat.className = 'clearFloat';
-  newTitle.appendChild(clearFloat);
-
-  // If not sorting by date, add them as usual
-  if(!this.options.sortByDate) {
-    this.nodes.root.appendChild(newTitle);
-    this.nodes.root.appendChild(newList);
-    this.createListEntries_(resultIndex, newList);
-  } else {
-    this.sortByDate_(resultIndex, newTitle, newList);
-  }
-  
-};
-
-/**
- * Setup to display the Result
- * @private
- */
-GFdynamicFeedControl.prototype.displayResult_ = function(resultIndex) {
-  this.resultIndex = resultIndex;
-  var result = this.results[resultIndex];
-  if (this.options.feedTransitionCallback) {
-    this.options.feedTransitionCallback(result);
-  }
-  if (this.options.title) {
-    this.setPlainTitle_(this.options.title);
-  } else {
-    this.setTitle_(result.feed);
-  }
-  this.clearNode_(this.nodes.entry);
-
-  if (this.started && !this.options.horizontal && this.options.stacked) {
-    this.entries = result.feed.entries;
-  } else {
-    this.createListEntries_(resultIndex, this.nodes.list);
-  }
-  this.displayEntries_();
-}
-
-/**
- * Set the Title to just plaintext
- * @private
- */
-GFdynamicFeedControl.prototype.setPlainTitle_ = function(title, opt_element) {
-  var el = opt_element || this.nodes.title;
-  el.innerHTML = title;
-}
-
-/**
- * Set the Title
- * @private
- */
-GFdynamicFeedControl.prototype.setTitle_ = function(resultFeed, opt_element) {
-  var el = opt_element || this.nodes.title;
-  this.clearNode_(el);
-  var link = document.createElement('a');
-  link.target = google.feeds.LINK_TARGET_BLANK;
-  link.href = resultFeed.link;
-  link.className = 'gfg-collapse-href';
-  link.innerHTML = resultFeed.title;
-  el.appendChild(link);
-}
-
-GFdynamicFeedControl.prototype.toggleCollapse = function(feedControl, 
-                                                         listReference, 
-                                                         collapseLink) {
-  return function() {
-    var els = feedControl.collapseElements;
-    for (var i=0; i < els.length; i++) {
-      var el = els[i];
-      el.list.style.display = 'none';
-      el.collapse.className = 'gfg-collapse-closed';
-    }
-    listReference.style.display = 'block';
-    collapseLink.className = 'gfg-collapse-open';
-  }
-}
-
-/**
- * Create the list Entries
- * @private
- */
-GFdynamicFeedControl.prototype.createListEntries_ = function(resultIndex, node) {
-  var entries = this.results[resultIndex].feed.entries;
-  this.clearNode_(node);
-  for (var i = 0; i < entries.length; i++) {
-    this.feedControl.createHtml(entries[i]);
-    var className = 'gfg-listentry ';
-    className += (i%2)?'gfg-listentry-even':'gfg-listentry-odd';
-    var listEntry = this.createDiv_(className);
-    var description = this.createDescription_(entries[i].content);
-    var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
-    var date = this.createDate_(monthNames[new Date(entries[i].publishedDate).getMonth()] + ' ' + new Date(entries[i].publishedDate).getDate() + ', ' + new Date(entries[i].publishedDate).getFullYear());
-    var link = this.createLink_(entries[i].link,
-                                entries[i].title,
-                                this.options.linkTarget);
-    listEntry.appendChild(date);
-    // listEntry.appendChild(description);
-    listEntry.appendChild(link);
-    if (this.options.pauseOnHover) {
-      listEntry.onmouseover = this.bind_(this.listMouseOver_, resultIndex, i);
-      listEntry.onmouseout = this.bind_(this.listMouseOut_, resultIndex, i);
-    }
-    entries[i].listEntry = listEntry;
-    node.appendChild(listEntry);
-  }
-  if (node == this.nodes.list) {
-    this.entries = entries;
-  }
-}
-
-/**
- * Begin to display the entries.
- * @private
- */
-GFdynamicFeedControl.prototype.displayEntries_ = function() {
-  this.entryIndex = 0;
-  this.displayCurrentEntry_();
-  this.setDisplayTimer_();
-  this.started = true;
-}
-
-/**
- * Display next entry.
- * @private
- */
-GFdynamicFeedControl.prototype.displayNextEntry_ = function() {
-  // Check to see if we have been orphaned and need to cleanup..
-  if (this.options.autoCleanup && this.isOrphaned_()) {
-      this.cleanup_();
-      return;
-  }
-
-  if (++this.entryIndex >= this.entries.length) {
-    // End of list, see if we should rotate feeds..
-    if (this.results.length > 1) {
-      if (++this.resultIndex >= this.results.length) {
-        this.resultIndex = 0;
-      }
-      this.displayResult_(this.resultIndex);
-      return;
-    } else {
-      this.entryIndex = 0;
-    }
-  }
-
-  if (this.options.transitionCallback) {
-    this.options.transitionCallback(this.entries[this.entryIndex]);
-  }
-  this.displayCurrentEntry_();
-  this.setDisplayTimer_();
-}
-
-/**
- * Display current entry.
- * @private
- */
-GFdynamicFeedControl.prototype.displayCurrentEntry_ = function() {
-  this.clearNode_(this.nodes.entry);
-  this.current = this.entries[this.entryIndex].html;
-  this.current.style.top = '0px';
-  this.nodes.entry.appendChild(this.current);
-  this.createOverlay_();
-  
-  // Expand the blog who's post is being displayed
-  if(this.options.collapseable) {
-    var feedTitle = null;
-    
-    for (var i=0; i < this.results.length; i++) {
-      if(this.results[i].feed.entries == this.entries) {
-        feedTitle = this.results[i].feed.title;
-      }
-    }
-
-    var els = this.collapseElements;
-
-    for (var i=0; i < els.length; i++) {
-      var el = els[i];
-      var divfeedTitle = el.collapse.previousSibling.innerHTML;
-      var expandClicker = el.collapse;
-      if(feedTitle == divfeedTitle) {
-        if(this.ie) {
-          expandClicker.click();
-        } else {
-          expandClicker.onclick();
-        }
-
-      }
-    }
-  }
-  
-  if (this.currentList) {
-    var className = 'gfg-listentry ';
-    className += (this.currentListIndex%2)?
-        'gfg-listentry-even':'gfg-listentry-odd';
-    this.currentList.className = className;
-  }
-  this.currentList = this.entries[this.entryIndex].listEntry;
-  this.currentListIndex = this.entryIndex;
-  var className = 'gfg-listentry gfg-listentry-highlight ';
-  className += (this.currentListIndex%2)?
-       'gfg-listentry-even':'gfg-listentry-odd';
-  this.currentList.className = className;
-}
-
-/**
- * Simulated mouse hover events for list entries.
- * @private
- */
-GFdynamicFeedControl.prototype.listMouseHover_ = function(resultIndex,
-                                                          listIndex) {
-  var result = this.results[resultIndex];
-  var listEntry = result.feed.entries[listIndex].listEntry;
-  listEntry.selectTimer = null;
-  this.clearTransitionTimer_();
-  this.clearDisplayTimer_();
-  this.resultIndex = resultIndex;
-  this.entries = result.feed.entries;
-  this.entryIndex = listIndex;
-  this.displayCurrentEntry_();
-}
-
-/**
- * Mouse over events for list entries.
- * @private
- */
-GFdynamicFeedControl.prototype.listMouseOver_ = function(resultIndex,
-                                                         listIndex) {
-  var result = this.results[resultIndex];
-  var listEntry = result.feed.entries[listIndex].listEntry;
-  var cb = this.bind_(this.listMouseHover_, resultIndex, listIndex);
-  listEntry.selectTimer = setTimeout(cb, this.options.hoverTime);
-}
-
-/**
- * Mouse out events for list entries.
- * @private
- */
-GFdynamicFeedControl.prototype.listMouseOut_ = function(resultIndex, listIndex) {
-  var result = this.results[resultIndex];
-  var listEntry = result.feed.entries[listIndex].listEntry;
-  if (listEntry.selectTimer) {
-    clearTimeout(listEntry.selectTimer);
-    listEntry.selectTimer = null;
-  } else {
-    this.setDisplayTimer_();
-  }
-}
-
-/**
- * Mouse over events for main entry.
- * @private
- */
-GFdynamicFeedControl.prototype.entryMouseOver_ = function(e) {
-  this.clearDisplayTimer_();
-  if (this.transitionTimer) {
-    this.clearTransitionTimer_();
-    this.displayCurrentEntry_();
-  }
-}
-
-/**
- * Mouse out events for main entry.
- * @private
- */
-GFdynamicFeedControl.prototype.entryMouseOut_ = function(e) {
-  this.setDisplayTimer_();
-}
-
-/**
- * Create the overlay div. This hack is for IE and transparency effects.
- * @private
- */
-GFdynamicFeedControl.prototype.createOverlay_ = function() {
-  if (this.current == null) return;
-  // Create div lazily and hold on to it..
-  if (this.overlay == null) {
-    var overlay = this.createDiv_('gfg-entry');
-    overlay.style.position = 'absolute';
-    overlay.style.top = '0px';
-    overlay.style.left = '0px';
-    this.overlay = overlay;
-  }
-  this.setOpacity_(this.overlay, 0);
-  this.nodes.entry.appendChild(this.overlay);
-}
-
-/**
- * Sets the display timer.
- * @private
- */
-GFdynamicFeedControl.prototype.setDisplayTimer_ = function() {
-  if (this.displayTimer) {
-    this.clearDisplayTimer_();
-  }
-  var cb = this.bind_(this.setFadeOutTimer_);
-  this.displayTimer = setTimeout(cb, this.options.displayTime);
-};
-
-/**
- * Class helper method for the time now in milliseconds
- * @private
- */
-GFdynamicFeedControl.timeNow = function() {
-  var d = new Date();
-  return d.getTime();
-};
-
-/**
- * Transition animation for fadeout. Cleanup when finished.
- * @private
- */
-GFdynamicFeedControl.prototype.fadeOutEntry_ = function() {
-  if (this.overlay) {
-    var delta = this.fadeOutDelta;
-    var ts = this.options.transitionStep;
-    var now = GFdynamicFeedControl.timeNow();
-    var tick = now - this.lastTick;
-    this.lastTick = now;
-    delta *= (tick/ts);
-
-    var op = this.overlay.opacity + delta;
-    // Overlay opacity
-    this.setOpacity_(this.overlay, op);
-    // Scroll down
-    if (this.options.scrollOnFadeOut && (op > .5)) {
-      var r = (op-.5)*2;
-      var newTop = Math.round(this.current.offsetHeight * r);
-      this.current.style.top = newTop + 'px';
-    }
-    if (op < 1) return;
-  }
-  // Finished.
-  this.clearTransitionTimer_();
-  this.displayNextEntry_();
-};
-
-/**
- * Sets the transition timer for fadeout.
- * @private
- */
-GFdynamicFeedControl.prototype.setFadeOutTimer_ = function() {
-  this.clearTransitionTimer_();
-  this.lastTick = GFdynamicFeedControl.timeNow();
-  var cb = this.bind_(this.fadeOutEntry_);
-  this.transitionTimer = setInterval(cb, this.options.transitionStep);
-};
-
-/**
- * Clear the transition timer. Used to prevent leaks.
- * @private
- */
-GFdynamicFeedControl.prototype.clearTransitionTimer_ = function() {
-  if (this.transitionTimer) {
-    clearInterval(this.transitionTimer);
-    this.transitionTimer = null;
-  }
-};
-
-/**
- * Clear the display timer.
- * @private
- */
-GFdynamicFeedControl.prototype.clearDisplayTimer_ = function() {
-  if (this.displayTimer) {
-    clearTimeout(this.displayTimer);
-    this.displayTimer = null;
-  }
-};
-
-/**
- * Setup our own subcontainer to the user supplied container.
- * @private
- */
-GFdynamicFeedControl.prototype.createSubContainers_ = function() {
-  var nodes = this.nodes;
-  var container = this.nodes.container;
-
-  this.clearNode_(container);
-  if (this.options.horizontal) {
-    container = this.createDiv_('gfg-horizontal-container');
-    nodes.root = this.createDiv_('gfg-horizontal-root');
-    this.nodes.container.appendChild(container);
-  } else {
-    nodes.root = this.createDiv_('gfg-root');
-  }
-  nodes.title = this.createDiv_('gfg-title');
-  nodes.entry = this.createDiv_('gfg-entry');
-  nodes.list = this.createDiv_('gfg-list');
-  nodes.root.appendChild(nodes.title);
-  nodes.root.appendChild(nodes.entry);
-
-  if (!this.options.horizontal && this.options.stacked) {
-    var newTitle = this.createDiv_('gfg-subtitle');
-    nodes.root.appendChild(newTitle);
-    this.setTitle_(this.results[0].feed, newTitle);
-    
-    if(this.options.collapseable) {
-      var collapseLink = document.createElement('div');
-      collapseLink.className = 'gfg-collapse-open';
-      newTitle.appendChild(collapseLink);
-      collapseLink.onclick = this.toggleCollapse(this, nodes.list, collapseLink);
-      this.collapseElements.push({
-        list : nodes.list,
-        collapse : collapseLink
-      });
-      nodes.list.style.display = 'block';
-    }
-    
-    var clearFloat = document.createElement('div');
-    clearFloat.className = 'clearFloat';
-    newTitle.appendChild(clearFloat);
-  }
-  
-  nodes.root.appendChild(nodes.list);
-  container.appendChild(nodes.root);
-
-  if (this.options.pauseOnHover) {
-    nodes.entry.onmouseover = this.bind_(this.entryMouseOver_);
-    nodes.entry.onmouseout = this.bind_(this.entryMouseOut_);
-  }
-
-  // Add Branding.
-  if (this.options.horizontal) {
-    nodes.branding = this.createDiv_('gfg-branding');
-    google.feeds.getBranding(nodes.branding, google.feeds.VERTICAL_BRANDING);
-    container.appendChild(nodes.branding);
-  }
-};
-
-/**
- * Helper method to properly clear a node and its children.
- * @param {Object} node Node to clear.
- * @private
- */
-GFdynamicFeedControl.prototype.clearNode_ = function(node) {
-  if (node == null) return;
-  var child;
-  while ((child = node.firstChild)) {
-    node.removeChild(child);
-  }
-};
-
-/**
- * Helper method to create a div with optional class and text.
- * @param {string} opt_className Optional className for the div.
- * @param {string} opt_text Optional text for the innerHTML.
- * @private
- */
-GFdynamicFeedControl.prototype.createDiv_ = function(opt_className, opt_text) {
-  var el = document.createElement("div");
-  if (opt_text) {
-    el.innerHTML = opt_text;
-  }
-  if (opt_className) { el.className = opt_className; }
-  return el;
-};
-
-/**
- * Helper method to create a link with href and text.
- * @param {string} href Href URL
- * @param {string} text text for the link.
- * @param {string} opt_target Optional link target.
- * @private
- */
-GFdynamicFeedControl.prototype.createLink_ = function(href, text, opt_target) {
-  var link = document.createElement('a');
-  link.href = href;
-  link.innerHTML = text;
-  if (opt_target) {
-    link.target = opt_target;
-  }
-  return link;
-};
-
-
-GFdynamicFeedControl.prototype.createDate_ = function(text) {
-  var date = document.createElement('p');
-  date.innerHTML = text;
-  return date;
-};
-
-GFdynamicFeedControl.prototype.createDescription_ = function(text) {
-  var description = document.createElement('p');
-  description.innerHTML = text;
-  return description;
-};
-
-/**
- * Cleanup results on being orphaned.
- * @private
- */
-GFdynamicFeedControl.prototype.clearResults_ = function() {
-  for (var i=0; i < this.results.length; i++) {
-    var result = this.results[i];
-    var entries = result.feed.entries;
-    for (var i = 0; i < entries.length; i++) {
-      var entry = entries[i];
-      entry.html = null;
-      entry.listEntry.onmouseover = null;
-      entry.listEntry.onmouseout = null;
-      if (entry.listEntry.selectTimer) {
-        clearTimeout(entry.listEntry.selectTimer);
-        entry.listEntry.selectTimer = null;
-      }
-      entry.listEntry = null;
-    }
-  }
-}
-
-/**
- * Check for being orphaned.
- * @private
- */
-GFdynamicFeedControl.prototype.isOrphaned_ = function() {
-  var root = this.nodes.root;
-  var orphaned = false;
-  if (!root || !root.parentNode) {
-    orphaned = true;
-  } else if (this.options.horizontal && !root.parentNode.parentNode) {
-    orphaned = true;
-  }
-  return orphaned;
-}
-
-/**
- * Cleanup on being orphaned.
- * @private
- */
-GFdynamicFeedControl.prototype.cleanup_ = function() {
-  this.started = false;
-  // Timer Events.
-  this.clearDisplayTimer_();
-  this.clearTransitionTimer_();
-  // Structures
-  this.clearResults_();
-  // Nodes
-  this.clearNode_(this.nodes.root);
-  this.nodes.container = null;
-}
-
-/**
- * Helper method to set opacity for nodes.. Also takes into account
- * visibility in general.
- * @param {Element} node element.
- * @param {Number} opacity alpha level.
- * @private
- */
-GFdynamicFeedControl.prototype.setOpacity_ = function(node, opacity) {
-  if (node == null) return;
-  opacity = Math.max(0, Math.min(1, opacity));
-  if (opacity == 0) {
-    if (node.style.visibility != 'hidden') {
-      node.style.visibility = 'hidden';
-    }
-  } else {
-    if (node.style.visibility != 'visible') {
-      node.style.visibility = 'visible';
-    }
-  }
-  if (this.ie) {
-    var normalized = Math.round(opacity*100);
-    node.style.filter = 'alpha(opacity=' + normalized + ')';
-  }
-  node.style.opacity = node.opacity = opacity;
-};
-
-GFgadget = GFdynamicFeedControl;


Mime
View raw message