diff --git a/JDBC MySQL Connector/mysql-connector-java-5.1.34-bin.jar b/JDBC MySQL Connector/mysql-connector-java-5.1.34-bin.jar
new file mode 100644
index 00000000..0236900b
Binary files /dev/null and b/JDBC MySQL Connector/mysql-connector-java-5.1.34-bin.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/LICENSE.txt b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/LICENSE.txt
new file mode 100644
index 00000000..dd5b3a58
--- /dev/null
+++ b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/LICENSE.txt
@@ -0,0 +1,174 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/NOTICE.txt b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/NOTICE.txt
new file mode 100644
index 00000000..449bfe6b
--- /dev/null
+++ b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/NOTICE.txt
@@ -0,0 +1,8 @@
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+------------------------------------------------------------------------
+See the file LICENSE.txt
+See licenses for accompanying products in the "/licenses" subdirectory.
+------------------------------------------------------------------------
+
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/javadoc/myfaces-api-2.0.2-javadoc.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/javadoc/myfaces-api-2.0.2-javadoc.jar
new file mode 100644
index 00000000..84e21806
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/javadoc/myfaces-api-2.0.2-javadoc.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/javadoc/myfaces-impl-2.0.2-javadoc.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/javadoc/myfaces-impl-2.0.2-javadoc.jar
new file mode 100644
index 00000000..b681c85c
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/javadoc/myfaces-impl-2.0.2-javadoc.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-beanutils-1.8.3.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-beanutils-1.8.3.jar
new file mode 100644
index 00000000..218510bc
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-beanutils-1.8.3.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-codec-1.3.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-codec-1.3.jar
new file mode 100644
index 00000000..957b6752
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-codec-1.3.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-collections-3.2.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-collections-3.2.jar
new file mode 100644
index 00000000..75580be2
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-collections-3.2.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-digester-1.8.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-digester-1.8.jar
new file mode 100644
index 00000000..1110f0aa
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-digester-1.8.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-discovery-0.4.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-discovery-0.4.jar
new file mode 100644
index 00000000..8355f0be
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-discovery-0.4.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-logging-1.1.1.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-logging-1.1.1.jar
new file mode 100644
index 00000000..1deef144
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/commons-logging-1.1.1.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/myfaces-api-2.0.2.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/myfaces-api-2.0.2.jar
new file mode 100644
index 00000000..50aec0b7
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/myfaces-api-2.0.2.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/myfaces-impl-2.0.2.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/myfaces-impl-2.0.2.jar
new file mode 100644
index 00000000..5671b838
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/lib/myfaces-impl-2.0.2.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/tlddoc/myfaces-impl-2.0.2-facelets-tlddoc.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/tlddoc/myfaces-impl-2.0.2-facelets-tlddoc.jar
new file mode 100644
index 00000000..67d53b7f
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/tlddoc/myfaces-impl-2.0.2-facelets-tlddoc.jar differ
diff --git a/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/tlddoc/myfaces-impl-2.0.2-tlddoc.jar b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/tlddoc/myfaces-impl-2.0.2-tlddoc.jar
new file mode 100644
index 00000000..d081a249
Binary files /dev/null and b/JSF 2.0 (Apache Myfaces JSF Core-2.0 API 2.0.2)/myfaces-core-2.0.2-bin/tlddoc/myfaces-impl-2.0.2-tlddoc.jar differ
diff --git a/JSFSimpleBlog/.classpath b/JSFSimpleBlog/.classpath
new file mode 100644
index 00000000..4dbeacb2
--- /dev/null
+++ b/JSFSimpleBlog/.classpath
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/JSFSimpleBlog/.gitignore b/JSFSimpleBlog/.gitignore
new file mode 100644
index 00000000..84c048a7
--- /dev/null
+++ b/JSFSimpleBlog/.gitignore
@@ -0,0 +1 @@
+/build/
diff --git a/JSFSimpleBlog/.metadata/WebContent/WEB-INF/faces-config.pageflow b/JSFSimpleBlog/.metadata/WebContent/WEB-INF/faces-config.pageflow
new file mode 100644
index 00000000..35e45f89
--- /dev/null
+++ b/JSFSimpleBlog/.metadata/WebContent/WEB-INF/faces-config.pageflow
@@ -0,0 +1,2 @@
+
+
diff --git a/JSFSimpleBlog/.project b/JSFSimpleBlog/.project
new file mode 100644
index 00000000..16e951f9
--- /dev/null
+++ b/JSFSimpleBlog/.project
@@ -0,0 +1,36 @@
+
+
+ JSFSimpleBlog
+
+
+
+
+
+ org.eclipse.wst.jsdt.core.javascriptValidator
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.wst.common.project.facet.core.builder
+
+
+
+
+ org.eclipse.wst.validation.validationbuilder
+
+
+
+
+
+ org.eclipse.jem.workbench.JavaEMFNature
+ org.eclipse.wst.common.modulecore.ModuleCoreNature
+ org.eclipse.wst.common.project.facet.core.nature
+ org.eclipse.jdt.core.javanature
+ org.eclipse.wst.jsdt.core.jsNature
+
+
diff --git a/JSFSimpleBlog/.settings/.jsdtscope b/JSFSimpleBlog/.settings/.jsdtscope
new file mode 100644
index 00000000..887f573a
--- /dev/null
+++ b/JSFSimpleBlog/.settings/.jsdtscope
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/JSFSimpleBlog/.settings/org.eclipse.jdt.core.prefs b/JSFSimpleBlog/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000..11f6e462
--- /dev/null
+++ b/JSFSimpleBlog/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/JSFSimpleBlog/.settings/org.eclipse.wst.common.component b/JSFSimpleBlog/.settings/org.eclipse.wst.common.component
new file mode 100644
index 00000000..aa5c86cd
--- /dev/null
+++ b/JSFSimpleBlog/.settings/org.eclipse.wst.common.component
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/JSFSimpleBlog/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/JSFSimpleBlog/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
new file mode 100644
index 00000000..0d46547f
--- /dev/null
+++ b/JSFSimpleBlog/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/JSFSimpleBlog/.settings/org.eclipse.wst.common.project.facet.core.xml b/JSFSimpleBlog/.settings/org.eclipse.wst.common.project.facet.core.xml
new file mode 100644
index 00000000..27aa8951
--- /dev/null
+++ b/JSFSimpleBlog/.settings/org.eclipse.wst.common.project.facet.core.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/JSFSimpleBlog/.settings/org.eclipse.wst.jsdt.ui.superType.container b/JSFSimpleBlog/.settings/org.eclipse.wst.jsdt.ui.superType.container
new file mode 100644
index 00000000..3bd5d0a4
--- /dev/null
+++ b/JSFSimpleBlog/.settings/org.eclipse.wst.jsdt.ui.superType.container
@@ -0,0 +1 @@
+org.eclipse.wst.jsdt.launching.baseBrowserLibrary
\ No newline at end of file
diff --git a/JSFSimpleBlog/.settings/org.eclipse.wst.jsdt.ui.superType.name b/JSFSimpleBlog/.settings/org.eclipse.wst.jsdt.ui.superType.name
new file mode 100644
index 00000000..05bd71b6
--- /dev/null
+++ b/JSFSimpleBlog/.settings/org.eclipse.wst.jsdt.ui.superType.name
@@ -0,0 +1 @@
+Window
\ No newline at end of file
diff --git a/JSFSimpleBlog/WebContent/META-INF/MANIFEST.MF b/JSFSimpleBlog/WebContent/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..5e949512
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/faces-config.xml b/JSFSimpleBlog/WebContent/WEB-INF/faces-config.xml
new file mode 100644
index 00000000..80660d3f
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/WEB-INF/faces-config.xml
@@ -0,0 +1,58 @@
+
+
+
+ resources.application
+
+ en
+
+
+
+ loginController
+ org.wbd.controller.LoginController
+ session
+
+ user
+ org.wbd.model.User
+
+
+
+
+ user
+ org.wbd.model.User
+ none
+
+
+ postController
+ org.wbd.controller.PostController
+ request
+
+
+ createPostController
+ org.wbd.controller.CreatePostController
+ request
+
+
+ post
+ org.wbd.model.Post
+ none
+
+
+ comment
+ org.wbd.model.Comment
+ none
+
+
+ commentController
+ org.wbd.controller.CommentController
+ request
+
+
+ deletedPostsController
+ org.wbd.controller.DeletedPostsController
+ request
+
+
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/lib/javax.faces-2.2.8.jar b/JSFSimpleBlog/WebContent/WEB-INF/lib/javax.faces-2.2.8.jar
new file mode 100644
index 00000000..402022af
Binary files /dev/null and b/JSFSimpleBlog/WebContent/WEB-INF/lib/javax.faces-2.2.8.jar differ
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/lib/mysql-connector-java-5.1.34-bin.jar b/JSFSimpleBlog/WebContent/WEB-INF/lib/mysql-connector-java-5.1.34-bin.jar
new file mode 100644
index 00000000..0236900b
Binary files /dev/null and b/JSFSimpleBlog/WebContent/WEB-INF/lib/mysql-connector-java-5.1.34-bin.jar differ
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/lib/serializer.jar b/JSFSimpleBlog/WebContent/WEB-INF/lib/serializer.jar
new file mode 100644
index 00000000..99f98db9
Binary files /dev/null and b/JSFSimpleBlog/WebContent/WEB-INF/lib/serializer.jar differ
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.1.jar b/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.1.jar
new file mode 100644
index 00000000..6b8e8357
Binary files /dev/null and b/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-impl-1.2.1.jar differ
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-jstlel-1.2.1.jar b/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-jstlel-1.2.1.jar
new file mode 100644
index 00000000..fc0fa7ef
Binary files /dev/null and b/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-jstlel-1.2.1.jar differ
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.1.jar b/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.1.jar
new file mode 100644
index 00000000..63e68b27
Binary files /dev/null and b/JSFSimpleBlog/WebContent/WEB-INF/lib/taglibs-standard-spec-1.2.1.jar differ
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/lib/xalan.jar b/JSFSimpleBlog/WebContent/WEB-INF/lib/xalan.jar
new file mode 100644
index 00000000..458fa73d
Binary files /dev/null and b/JSFSimpleBlog/WebContent/WEB-INF/lib/xalan.jar differ
diff --git a/JSFSimpleBlog/WebContent/WEB-INF/web.xml b/JSFSimpleBlog/WebContent/WEB-INF/web.xml
new file mode 100644
index 00000000..00390d3c
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/WEB-INF/web.xml
@@ -0,0 +1,44 @@
+
+
+
+
+ Faces Servlet
+ javax.faces.webapp.FacesServlet
+
+
+ Faces Servlet
+ *.jsf
+
+
+ javax.faces.PROJECT_STAGE
+ Development
+
+
+ State saving method: 'client' or 'server' (default). See JSF Specification section 2.5.2
+ javax.faces.STATE_SAVING_METHOD
+ client
+
+
+
+ index.jsf
+ welcome.jsf
+ index.html
+ index.jsp
+
+
\ No newline at end of file
diff --git a/JSFSimpleBlog/WebContent/css/screen.css b/JSFSimpleBlog/WebContent/css/screen.css
new file mode 100644
index 00000000..fe22e3f3
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/css/screen.css
@@ -0,0 +1,864 @@
+@import url(http://fonts.googleapis.com/css?family=Open+Sans);
+@import url(http://fonts.googleapis.com/css?family=Questrial);
+
+/* Reset & Basics (Inspired by E. Meyers)
+================================================== */
+html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, address, cite, code, em, img, small, strong, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, embed, figure, figcaption, footer, header, hgroup, menu, nav, section, summary, time, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline; }
+article, aside, details, figcaption, figure, footer, header, hgroup, menu, time, nav, section {
+ display: block; }
+html, body, .wrapper {
+ min-height: 100%;
+}
+
+
+/* Body
+================================================== */
+html, body {
+ height: 100%;
+}
+.wrapper {
+ min-height: 100%;
+}
+body {
+ overflow-x: hidden;
+ font: 17px/28px ff-meta-serif-web-pro, "Georgia", serif;
+ color: #333;
+ background: #fff;
+}
+
+
+/* Typography
+================================================== */
+h1, h2, h3, h4, h5, h6 {
+ font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
+ font-weight: normal;
+ text-transform: uppercase;
+ font-weight: 700;
+ color: #000;
+ text-rendering: optimizeLegibility;
+}
+
+h1 {
+ font-size: 50px;
+ padding-bottom: 30px;
+}
+
+h2 {
+ font-size: 45px;
+ padding-bottom: 25px;
+}
+
+h3 {
+ font-size: 40px;
+ padding-bottom: 20px;
+}
+
+h4 {
+ font-size: 35px;
+ padding-bottom: 15px;
+}
+
+h5 {
+ font-size: 30px;
+ padding-bottom: 10px;
+}
+
+p {
+ margin: 0 0 28px 0;
+}
+
+strong {
+ font-weight: bold;
+}
+em {
+ font-style: italic;
+}
+sup {
+ line-height: 0;
+}
+
+small {
+ font-size: 70%;
+}
+
+cite {
+ font-size: 80%;
+ font-style: italic;
+ }
+
+/* Teaser
+================================================== */
+
+header#teaser h1 {
+ text-transform: none !important;
+ color: #333;
+ font-size: 28px !important;
+ font-weight: 300 !important;
+}
+
+
+/* Links
+================================================== */
+a {
+ color: #F40034;
+ text-decoration: none;
+ -webkit-transition: color .2s ease-in-out;
+ -moz-transition: color .2s ease-in-out;
+ transition: color .2s ease-in-out;
+}
+a:hover {
+ color: #F40034;
+}
+
+/* Layout
+================================================== */
+/* White container that is the "page" */
+.wrapper {
+ max-width: 1500px;
+ margin: 0 auto;
+ background: #fff;
+}
+
+/* Containers to keep content to a set width */
+.nav,
+.art-header-inner,
+.footer,
+.art-list,
+.abt,
+.fourohfour {
+ width: 980px;
+}
+.nav,
+.art-body-inner,
+.footer,
+.art-list,
+.abt,
+.fourohfour {
+ position: relative;
+ margin: 0 auto;
+}
+
+/* Nav
+================================================== */
+.nav {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ height: 70px;
+ padding-top: 40px;
+ margin-left: -490px; /* Half width of nav */
+ border-bottom: 1px solid #333;
+ z-index: 2;
+}
+.nav.fixed {
+ position: fixed;
+}
+#logo {
+ float: left;
+}
+.nav-primary {
+ float: right;
+}
+.nav-primary li {
+ display: inline-block;
+ margin-left: 10px;
+ font-weight: 500;
+}
+#logo h1,
+.nav-primary li,
+.nav-primary li a {
+ font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
+ font-weight: 700;
+ font-size: 13px;
+ line-height: 30px;
+ color: #000;
+ text-transform: uppercase;
+}
+
+#logo h1 {
+ height: 30px;
+ margin-left: 0px;
+ letter-spacing: 1px;
+ font-family: 'Questrial', sans-serif;
+ font-size: 30px;
+}
+
+#logo h1 span{
+ color: #F40034 !important;
+}
+
+.nav li:first-child {
+ margin-left: 0; /* Remove left margin from the first nav li */
+}
+
+/* Home Page
+================================================== */
+
+div#home {}
+
+#home > div.cover {
+ max-width: 980px;
+ margin: 0px auto;
+ /*padding-top: 110px;*/
+}
+
+div.cover {
+
+}
+
+div.cover > img {
+ width: 100%;
+ height: 100%;
+}
+
+
+/* Article
+================================================== */
+.art {
+ margin-top: -131px;
+}
+/* Header */
+.art-header {
+ height: 900px;
+ /* Background image is defined in the post */
+ background-position: top center;
+ background-attachment: fixed;
+ overflow: hidden;
+}
+/* Contains the time, title and subtitle for an article */
+.art-header-inner {
+ position: fixed;
+ top: 300px;
+ left: 50%;
+ margin-left: -490px;
+}
+.art-time,
+.art-title,
+.art-subtitle {
+ text-align: center;
+ text-transform: uppercase;
+}
+.art-time {
+ font-size: 14px;
+ line-height: 1.8;
+ letter-spacing: 4px;
+}
+.art-title {
+ font-size: 100px;
+ line-height: .9;
+ letter-spacing: -2px;
+ width: 100%;
+}
+.art-subtitle {
+ margin-top: 4px;
+ font-size: 14px;
+ line-height: 1.3;
+ letter-spacing: 4px;
+}
+
+/* If small header, make few adjustments */
+.small .art-title {
+ font-size: 70px;
+ line-height: 65px;
+}
+.small.art-header-inner {
+ top: 320px;
+}
+
+/* Body */
+.art-body {
+ position: relative;
+ width: 100%;
+ background: #fff;
+ z-index: 100;
+ -webkit-box-shadow: 0 -3px 3px rgba(0,0,0,.2);
+ -moz-box-shadow: 0 -3px 3px rgba(0,0,0,.2);
+ box-shadow: 0 -3px 3px rgba(0,0,0,.2);
+}
+.art-body-inner {
+ font-family: Georgia,Cambria,"Times New Roman",Times,serif;
+ max-width: 640px;
+ padding: 80px 0 50px;
+ letter-spacing: 0.01rem;
+ font-weight: 400;
+ font-style: normal;
+ font-size: 21px;
+ line-height: 1.5;
+}
+.art-body-inner a:hover {
+ border-bottom: 1px solid #F40034;
+ padding-bottom:2px;
+}
+.art-body-inner ul,
+.art-body-inner ol { /* For lists in the article body */
+ margin-bottom: 26px;
+}
+.art-body-inner ul li {
+ list-style: disc;
+}
+
+.art-body-inner mark {
+ background-color: #fdffb6;
+ padding: 2px;
+ -webkit-box-shadow: #fdffb6 0 0 5px;
+ -moz-box-shadow: #fdffb6 0 0 5px;
+ box-shadow: #fdffb6 0 0 5px;
+}
+
+.art-body-inner blockquote {
+ font-size: 16px;
+ background: #f9f9f9;
+ border-left: 10px solid #ccc;
+ margin: 1.5em 10px;
+ padding: 0.5em 10px;
+ quotes: "\201C""\201D""\2018""\2019";
+}
+
+.art-body-inner blockquote p:first-child:before {
+ color: #ccc;
+ content: "“";
+ font-size: 4em;
+ line-height: 0.1em;
+ margin-right: 0.25em;
+ vertical-align: -0.4em;
+}
+
+.art-body-inner blockquote p {
+ margin-bottom: 1.5em;
+}
+
+.art-body-inner blockquote p:last-child {
+ margin-bottom: 0;
+}
+
+
+.dropcap { /* First character on articles */
+ float: left;
+ margin: 47px 10px 20px 0;
+ font-size: 100px;
+ line-height: 0;
+}
+.art-subhead { /* Subheads are used to break up sections of an article */
+ margin: 60px 0 15px;
+ font-size: 20px;
+ line-height: 28px;
+ letter-spacing: 3px;
+}
+.callout { /* Callouts are like large pullquotes */
+ font-weight: bold;
+}
+.art-body-inner img {
+ max-width: 100%;
+ max-height: 600px;
+ margin-bottom: 26px;
+}
+.art-body-inner img.center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+.art-body-inner .art-reference {
+ font-size: 80%;
+ color: #999;
+ margin-top: 50px;
+}
+
+/* For simple, white background posts */
+.simple .art-body {
+ background: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+
+/* List of Articles
+================================================== */
+.art-list {
+ padding: 120px 0 0;
+}
+.art-list-body {
+ position: relative;
+ overflow: hidden;
+}
+.art-list-item {
+ padding: 40px 0;
+ list-style: none;
+ overflow: hidden;
+ border-bottom: 1px solid #ccc;
+}
+.art-list-item:last-child {
+ border-bottom: none;
+}
+.art-list-title {
+ font-size: 26px;
+ line-height: 26px;
+ font-weight: 700;
+}
+.art-list-item-title-and-time {
+ float: left;
+ width: 30%;
+ margin-bottom: 10px;
+}
+.art-list-time {
+ font-size: 12px;
+ line-height: 20px;
+ letter-spacing: 2px;
+ text-transform: uppercase;
+ color: #999;
+}
+.art-list-title a {
+ color: #000;
+}
+.art-list-title a:hover {
+ color: #F40034;
+}
+.art-list-item p {
+ width: 70%;
+ float: left;
+ /*margin-left: 5%;*/
+ margin-bottom: 0;
+ font-size: 16px;
+ line-height: 24px;
+}
+.art-list-item form {
+ display: inline;
+}
+
+
+/* Footer
+================================================== */
+.footer {
+ padding: 30px 0 40px;
+ overflow: hidden;
+ border-top: 1px solid #ccc;
+}
+.footer,
+.footer a {
+ font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
+ font-size: 13px;
+ text-transform: uppercase;
+ color: #777;
+}
+.footer a:hover {
+ color: #000;
+}
+.back-to-top,
+.footer-nav,
+.offsite-links {
+ width: 45%;
+ float: left;
+}
+.psi {
+ width:10%;
+ float:left;
+ text-align: center;
+}
+.footer-nav {
+ text-align: center;
+}
+.offsite-links {
+ text-align: right;
+}
+.footer .twitter-link:hover {
+ color: #0084B4;
+}
+.footer .instagram-link:hover {
+ color: #3F729B;
+}
+.footer .github-link:hover {
+ color: #c5376d;
+}
+.footer .caffein8-link:hover{
+ color: black;
+}
+.footer .rss-link:hover {
+ color: #e85d24;
+}
+/* Remove prev & next links on loop */
+.art-list + .footer .footer-nav,
+.abt + .footer .footer-nav {
+ text-indent: -9999px;
+ text-align: left;
+}
+
+
+/* White Reverse Theme
+================================================== */
+/* Nav */
+.nav.white {
+ border-bottom-color: #fff;
+ border-bottom-color: rgba(255,255,255,.3);
+}
+.nav.white li a,
+.nav.white li,
+.nav.white #logo h1 {
+ color: #fff;
+ text-shadow: 0 0 8px rgba(0,0,0,.5);
+}
+.nav.white #logo h1 {
+ background-position: top center;
+}
+
+nav.pagination{
+ text-align: right;
+ padding-bottom: 25px;
+}
+/* Art header */
+.art-header.white {
+ background-color: #111;
+}
+.art-header.white .art-time,
+.art-header.white .art-title,
+.art-header.white .art-subtitle {
+ color: #fff;
+ text-shadow: 0 0 8px rgba(0,0,0,.5);
+}
+
+
+/* About page
+================================================== */
+.abt {
+ padding: 200px 0 100px;
+ list-style: none;
+}
+.abt .abt-header {
+ font-size: 140px;
+ line-height: 1;
+ text-transform: none;
+}
+.abt .abt-subheader {
+ font-size: 24px;
+ font-style: italic;
+ text-transform: none;
+ color: #777;
+}
+.abt-body {
+ -moz-column-count: 2;
+ -moz-column-gap: 20px;
+ -webkit-column-count: 2;
+ -webkit-column-gap: 20px;
+ margin-bottom: 28px;
+}
+.abt-signoff {
+ line-height: 1.3;
+ font-style: italic;
+ color: #777;
+}
+
+/* 404 page
+================================================== */
+.fourohfour {
+ padding: 240px 0 100px;
+ text-align: center;
+}
+
+/* Code
+================================================== */
+
+code, tt {
+background: #ededee;
+color: #3C4043;
+font-size: 90%;
+padding: 1px 3px;
+}
+
+pre {
+ width: 92%;
+ overflow: auto;
+ margin: 2rem 0;
+ padding: 1rem 0.8rem 1rem 1.2rem;
+ color: #3f3b36;
+ border: 1px solid #ccc;
+ border-left: 1rem solid #ccc;
+ font: lighter 1.2rem/2rem monospace;
+ background: url(/assets/img/pre.png) repeat 0 -0.9rem;
+ background-size: 1px 4rem;
+}
+
+pre code, tt {
+font-size: inherit;
+white-space: -moz-pre-wrap;
+white-space: pre-wrap;
+background: transparent;
+border: none;
+padding: 0;
+}
+
+
+.gist {
+ font-size: 14px;
+}
+
+
+/* Responsive
+================================================== */
+@media only screen and (max-width: 1080px) {
+ /* Set all of the 980 containers to flexible width */
+ .nav,
+ .art-body-inner,
+ .art-header-inner,
+ .footer,
+ .art-list,
+ .abt,
+ .fourohfour {
+ width: 90%;
+ }
+ .nav,
+ .art-header-inner {
+ margin-left: -45%;
+ }
+}
+
+@media only screen and (max-width: 1024px) {
+ /* Everything becomes scrolling and non-fading */
+ .nav,
+ .nav.fixed {
+ position: relative;
+ opacity: 1 !important; /* Important to override JS values */
+ display: inline-block;
+ }
+ .art-header-inner {
+ position: relative;
+ top: 0 !important; /* Important to override JS values */
+ margin-top: 240px !important; /* Important to override JS values */
+ opacity: 1 !important; /* Important to override JS values */
+ }
+ /* Articles no longer have fixed heights */
+ .art-header {
+ height: auto;
+ padding-bottom: 100px;
+ background-size: cover !important;
+ background-attachment: scroll;
+ }
+ /* Remove bottom space out if articles doesn't have a background */
+ .simple .art-header {
+ padding-bottom: 0;
+ }
+ .art-list {
+ padding-top: 0;
+ }
+ .abt {
+ padding: 40px 0;
+ }
+ .fourohfour {
+ padding: 80px 0 60px;
+ }
+}
+
+@media only screen and (max-width: 780px) {
+ .art-body-inner ul,
+ .art-body-inner ol {
+ margin-left: 20px;
+ }
+ .art-title {
+ letter-spacing: 0;
+ }
+ .art-subtitle,
+ .art-time {
+ font-size: 12px;
+ }
+ .nav {
+ padding-top: 25px;
+ height: 55px;
+ }
+ .art-list-item-title-and-time,
+ .art-list-item p {
+ float: none;
+ width: auto;
+ margin-left: 0;
+ }
+ .abt-body {
+ -moz-column-count: 1;
+ -webkit-column-count: 1;
+ }
+}
+
+@media only screen and (max-width: 500px) {
+ .nav-primary li {
+ margin-left: 10px;
+ }
+ .nav #logo h1 {
+ font-size: 16px;
+ letter-spacing: -1px;
+ }
+ .nav li a {
+ font-size: 12px;
+ }
+ .art-header {
+ padding-bottom: 50px;
+ }
+ .art-header-inner {
+ margin-top: 190px !important;
+ }
+ .art-body-inner {
+ padding-top: 30px;
+ }
+ body {
+ font-size: 15px;
+ line-height: 24px;
+ }
+ p {
+ margin-bottom: 24px;
+ }
+ .footer {
+ padding: 10px 0 20px;
+ }
+ .back-to-top,
+ .footer-nav {
+ width: 50%;
+ }
+ .back-to-top {
+ text-align: left;
+ }
+ .footer-nav {
+ text-align: right;
+ }
+ .offsite-links {
+ float: left;
+ width: 100%;
+ text-align: left;
+ }
+ .offsite-links a {
+ font-size: 12px;
+ }
+ .art-list + .footer .footer-nav {
+ display: none;
+ }
+ .abt .abt-header {
+ font-size: 80px;
+ }
+ .abt .abt-subheader {
+ font-size: 18px;
+ }
+}
+
+
+/* Misc
+================================================== */
+::selection {
+ background: #000;
+ color: #fff;
+}
+::-moz-selection {
+ background: #000;
+ color: #fff;
+}
+img.left {
+ float: left;
+ margin-right: 20px;
+}
+img.right {
+ float: right;
+ margin-left: 20px;
+}
+/* Clearfixing pile */
+.nav:before,
+.art-body-inner:before,
+.footer:before,
+.art-list:before {
+ content:"";
+ display:table;
+}
+.nav:after,
+.art-body-inner:after,
+.footer:after,
+.art-list:after {
+ clear:both;
+}
+.nav,
+.art-body-inner,
+.footer,
+.art-list {
+ zoom:1; /* For IE 6/7 (trigger hasLayout) */
+}
+
+
+@-webkit-keyframes le-fade {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+@-moz-keyframes le-fade {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+.art-header-inner {
+ -webkit-animation: le-fade .5s 0 1 ease-out;
+ -moz-animation: le-fade .5s 0 1 ease-out;
+}
+
+.art-list,
+.nav,
+.abt,
+.art-body {
+ -webkit-animation: le-fade .5s 0s 1 ease-out;
+ -moz-animation: le-fade .5s 0s 1 ease-out;
+}
+
+hr.featured-article {
+ padding: 0;
+ border: none;
+ border-top: medium double #bbb;
+ color: #bbb;
+ text-align: center;
+}
+hr.featured-article:after {
+ content: "✭ Featured Article ✭";
+ display: inline-block;
+ position: relative;
+ top: -0.8em;
+ font-size: 1.2em;
+ padding: 0 0.6em;
+ background: white;
+}
+
+/* FORM */
+
+#contact-area {
+ width: 600px;
+ margin-top: 25px;
+}
+
+#contact-area input, #contact-area textarea {
+ padding: 5px;
+ width: 471px;
+ font-family: Helvetica, sans-serif;
+ margin: 0px 0px 10px 0px;
+ border: 2px solid #ccc;
+}
+
+#contact-area textarea {
+ height: 90px;
+}
+
+#contact-area textarea:focus, #contact-area input:focus {
+ border: 2px solid #900;
+}
+
+#contact-area input.submit-button {
+ width: 100px;
+
+}
+
+label {
+ float: left;
+ text-align: right;
+ margin-right: 15px;
+ width: 100px;
+ padding-top: 5px;
+}
\ No newline at end of file
diff --git a/JSFSimpleBlog/WebContent/deleted.xhtml b/JSFSimpleBlog/WebContent/deleted.xhtml
new file mode 100644
index 00000000..749fbd46
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/deleted.xhtml
@@ -0,0 +1,49 @@
+
+
+
+Simple Blog | Deleted Posts (Admin)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/JSFSimpleBlog/WebContent/edit_post.xhtml b/JSFSimpleBlog/WebContent/edit_post.xhtml
new file mode 100644
index 00000000..a23e9354
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/edit_post.xhtml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+Simple Blog | Edit Post
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
Edit Post
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/JSFSimpleBlog/WebContent/img/pre.png b/JSFSimpleBlog/WebContent/img/pre.png
new file mode 100644
index 00000000..7f48517b
Binary files /dev/null and b/JSFSimpleBlog/WebContent/img/pre.png differ
diff --git a/JSFSimpleBlog/WebContent/index.xhtml b/JSFSimpleBlog/WebContent/index.xhtml
new file mode 100644
index 00000000..4827a4bd
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/index.xhtml
@@ -0,0 +1,52 @@
+
+
+
+Simple Blog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/JSFSimpleBlog/WebContent/js/app.js b/JSFSimpleBlog/WebContent/js/app.js
new file mode 100644
index 00000000..66276cd1
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/js/app.js
@@ -0,0 +1,144 @@
+var isMobile;
+
+// Identify if visitor on mobile with lame sniffing to remove parallaxing title
+if( navigator.userAgent.match(/Android/i) ||
+ navigator.userAgent.match(/webOS/i) ||
+ navigator.userAgent.match(/iPhone/i) ||
+ navigator.userAgent.match(/iPod/i) ||
+ navigator.userAgent.match(/iPad/i) ||
+ navigator.userAgent.match(/BlackBerry/)
+){
+ isMobile = true;
+}
+
+$(document).ready(function() {
+
+ // Global vars
+ var $artHeaderInner = $('.art-header-inner');
+ var $artHeader = $('.art-header');
+ var $artTitle = $('.art-title');
+ var $artSubtitle = $('.art-subtitle');
+ var $artTime = $('.art-time');
+ var artTitleFontSize = parseInt($artTitle.css('font-size'));
+ var $nav = $('.nav');
+ var windowScroll;
+
+ // Apply Fittext to article titles to make it scale responsively in a smooth fashion
+ $artTitle.fitText(1, { minFontSize: '34px' });
+
+ // Identify if visitor has a large enough viewport for parallaxing title
+ function isLargeViewport() {
+ if($nav.css('position') == "relative") {
+ return false;
+ } else {
+ return true;
+ }
+ }
+
+ // If large viewport and not mobile, parallax the title
+ if(!isMobile) {
+ $(window).scroll(function() {
+ if(isLargeViewport()) {
+ slidingTitle();
+ }
+ });
+ }
+
+ // Window gets large enough, need to recalc all parallaxing title values
+ $(window).resize(function() {
+ if(isLargeViewport()) {
+ slidingTitle();
+ }
+ });
+
+ // Functional parallaxing calculations
+ function slidingTitle() {
+ //Get scroll position of window
+ windowScroll = $(this).scrollTop();
+
+ //Slow scroll of .art-header-inner scroll and fade it out
+ $artHeaderInner.css({
+ 'margin-top' : -(windowScroll/3)+"px",
+ 'opacity' : 1-(windowScroll/550)
+ });
+
+ //Slowly parallax the background of .art-header
+ $artHeader.css({
+ 'background-position' : 'center ' + (-windowScroll/8)+"px"
+ });
+
+ //Fade the .nav out
+ $nav.css({
+ 'opacity' : 1-(windowScroll/400)
+ });
+ }
+
+ // Link to top of page without changing URL
+ $('.back-to-top a').click(function(e) {
+ e.preventDefault();
+ $(window).scrollTop(0);
+ })
+
+ // Cover image of the header
+ var $postImage = $('img[alt="cover"]');
+ if ( $postImage.length ) {
+ var postImageURL = $postImage.attr('src');
+ $('.art-header').css('background-image','url(' + postImageURL + ')');
+ $('.art-header').css('background-size','100%');
+
+ // Change color scheme to white
+ $('#logo h1').css('color','white');
+ $('.art-title').css('color','white');
+ $('.art-subtitle').css('color','white');
+ $('.art-time').css('color','white');
+ $('.nav-primary li a').css('color','white');
+
+ // Add Text Shadows
+ $('.art-title').css('text-shadow','3px 3px 0 rgba(0,0,0,0.1), -1px -1px 0 rgba(0,0,0,0.1), 1px -1px 0 rgba(0,0,0,0.1), -1px 1px 0 rgba(0,0,0,0.1), 1px 1px 0 rgba(0,0,0,0.1)');
+ $('.art-subtitle').css('text-shadow','3px 3px 0 rgba(0,0,0,0.1), -1px -1px 0 rgba(0,0,0,0.1), 1px -1px 0 rgba(0,0,0,0.1), -1px 1px 0 rgba(0,0,0,0.1), 1px 1px 0 rgba(0,0,0,0.1)');
+ $('.art-time').css('text-shadow','3px 3px 0 rgba(0,0,0,0.1), -1px -1px 0 rgba(0,0,0,0.1), 1px -1px 0 rgba(0,0,0,0.1), -1px 1px 0 rgba(0,0,0,0.1), 1px 1px 0 rgba(0,0,0,0.1)');
+
+ }
+ $postImage.remove();
+
+ // Subtitles
+ var $subtitle = $('span[id="subtitle"]');
+ if ( $subtitle.length ) {
+ var subtitleText = $('#subtitle').text();
+ $('.art-subtitle').html(subtitleText);
+
+ }
+ $subtitle.remove();
+
+ // Make punctuation smarter
+ jQuery.fn.smarten = (function() {
+
+ function smartenNode(node) {
+ if (node.nodeType === 3) {
+ node.data = node.data
+ .replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018") // Opening singles
+ .replace(/'/g, "\u2019") // Closing singles & apostrophes
+ .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201c") // Opening doubles
+ .replace(/"/g, "\u201d") // Closing doubles
+ .replace(/--/g, "\u2013") // En dashes
+ .replace(/---/g, "\u2014") // Em dashes
+ .replace(/\.{3}/g, "\u2026"); // Ellipsis
+ } else if (node.nodeType === 1) {
+ if (node = node.firstChild) do {
+ smartenNode(node);
+ } while (node = node.nextSibling);
+ }
+ }
+
+ return function() {
+ return this.each(function(){
+ smartenNode(this);
+ });
+ };
+
+ }());
+
+ // Instantiation
+ $('article').smarten();
+
+});
\ No newline at end of file
diff --git a/JSFSimpleBlog/WebContent/js/fittext.js b/JSFSimpleBlog/WebContent/js/fittext.js
new file mode 100644
index 00000000..035baa36
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/js/fittext.js
@@ -0,0 +1,46 @@
+/*global jQuery */
+/*!
+* FitText.js 1.0
+*
+* Copyright 2011, Dave Rupert http://daverupert.com
+* Released under the WTFPL license
+* http://sam.zoy.org/wtfpl/
+*
+* Date: Thu May 05 14:23:00 2011 -0600
+*/
+$(document).ready(function() {
+
+(function( $ ){
+
+ $.fn.fitText = function( kompressor, options ) {
+
+ // Setup options
+ var compressor = kompressor || 1,
+ settings = $.extend({
+ 'minFontSize' : Number.NEGATIVE_INFINITY,
+ 'maxFontSize' : Number.POSITIVE_INFINITY
+ }, options);
+
+ return this.each(function(){
+
+ // Store the object
+ var $this = $(this);
+
+ // Resizer() resizes items based on the object width divided by the compressor * 10
+ var resizer = function () {
+ $this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));
+ };
+
+ // Call once to set.
+ resizer();
+
+ // Call on resize. Opera debounces their resize by default.
+ $(window).on('resize', resizer);
+
+ });
+
+ };
+
+})( jQuery );
+
+});
\ No newline at end of file
diff --git a/JSFSimpleBlog/WebContent/js/jquery.min.js b/JSFSimpleBlog/WebContent/js/jquery.min.js
new file mode 100644
index 00000000..16ad06c5
--- /dev/null
+++ b/JSFSimpleBlog/WebContent/js/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.2 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cu(a){if(!cj[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),b.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write((f.support.boxModel?"":"")+"