Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,330 @@
*,
*:after,
*::before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}

@font-face {
font-weight: normal;
font-style: normal;
font-family: 'ecoicons';
src: url("../fonts/ecoicons/ecoicons.eot");
src: url("../fonts/ecoicons/ecoicons.eot?#iefix") format("embedded-opentype"), url("../fonts/ecoicons/ecoicons.woff") format("woff"), url("../fonts/ecoicons/ecoicons.ttf") format("truetype"), url("../fonts/ecoicons/ecoicons.svg#ecoicons") format("svg");
}

/* Icomoon.com */

.gn-menu-main,
.gn-menu-main ul {
margin: 0;
padding: 0;
background: white;
color: #5f6f81;
list-style: none;
text-transform: none;
font-weight: 300;
font-family: 'Lato', Arial, sans-serif;
line-height: 60px;
}

.gn-menu-main {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 60px;
font-size: 13px;
}

.gn-menu-main a {
display: block;
height: 100%;
color: #5f6f81;
text-decoration: none;
cursor: pointer;
}

.no-touch .gn-menu-main a:hover,
.no-touch .gn-menu li.gn-search-item:hover,
.no-touch .gn-menu li.gn-search-item:hover a {
background: #5f6f81;
color: white;
}

.gn-menu-main > li {
display: block;
float: left;
height: 100%;
border-right: 1px solid #c6d0da;
text-align: center;
}

/* icon-only trigger (menu item) */

.gn-menu-main li.gn-trigger {
position: relative;
width: 60px;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}

.gn-menu-main > li:last-child {
float: right;
border-right: none;
border-left: 1px solid #c6d0da;
}

.gn-menu-main > li > a {
padding: 0 30px;
text-transform: uppercase;
letter-spacing: 1px;
font-weight: bold;
}

.gn-menu-main:after {
display: table;
clear: both;
content: "";
}

.gn-menu-wrapper {
position: fixed;
top: 60px;
bottom: 0;
left: 0;
overflow: hidden;
width: 60px;
border-top: 1px solid #c6d0da;
background: white;
-webkit-transform: translateX(-60px);
-moz-transform: translateX(-60px);
transform: translateX(-60px);
-webkit-transition: -webkit-transform 0.3s, width 0.3s;
-moz-transition: -moz-transform 0.3s, width 0.3s;
transition: transform 0.3s, width 0.3s;
}

.gn-scroller {
position: absolute;
overflow-y: scroll;
width: 370px;
height: 100%;
}

.gn-menu {
border-bottom: 1px solid #c6d0da;
text-align: left;
font-size: 18px;
}

.gn-menu li:not(:first-child),
.gn-menu li li {
box-shadow: inset 0 1px #c6d0da
}

.gn-submenu li {
overflow: hidden;
height: 0;
-webkit-transition: height 0.3s;
-moz-transition: height 0.3s;
transition: height 0.3s;
}

.gn-submenu li a {
color: #c1c9d1
}

input.gn-search {
position: relative;
z-index: 10;
padding-left: 60px;
outline: none;
border: none;
background: transparent;
color: #5f6f81;
font-weight: 300;
font-family: 'Lato', Arial, sans-serif;
cursor: pointer;
}

/* placeholder */

.gn-search::-webkit-input-placeholder {
color: #5f6f81
}

.gn-search:-moz-placeholder {
color: #5f6f81
}

.gn-search::-moz-placeholder {
color: #5f6f81
}

.gn-search:-ms-input-placeholder {
color: #5f6f81
}

/* hide placeholder when active in Chrome */

.gn-search:focus::-webkit-input-placeholder,
.no-touch .gn-menu li.gn-search-item:hover .gn-search:focus::-webkit-input-placeholder {
color: transparent
}

input.gn-search:focus {
cursor: text
}

.no-touch .gn-menu li.gn-search-item:hover input.gn-search {
color: white
}

/* placeholder */

.no-touch .gn-menu li.gn-search-item:hover .gn-search::-webkit-input-placeholder {
color: white
}

.no-touch .gn-menu li.gn-search-item:hover .gn-search:-moz-placeholder {
color: white
}

.no-touch .gn-menu li.gn-search-item:hover .gn-search::-moz-placeholder {
color: white
}

.no-touch .gn-menu li.gn-search-item:hover .gn-search:-ms-input-placeholder {
color: white
}

.gn-menu-main a.gn-icon-search {
position: absolute;
top: 0;
left: 0;
height: 60px;
}

.gn-icon::before {
display: inline-block;
width: 60px;
text-align: center;
text-transform: none;
font-weight: normal;
font-style: normal;
font-variant: normal;
font-family: 'ecoicons';
line-height: 1;
speak: none;
-webkit-font-smoothing: antialiased;
}

.gn-icon-help::before {
content: "\e000"
}

.gn-icon-earth::before {
content: "\e004"
}

.gn-icon-cog::before {
content: "\e006"
}

.gn-icon-search::before {
content: "\e005"
}

.gn-icon-download::before {
content: "\e007"
}

.gn-icon-photoshop::before {
content: "\e001"
}

.gn-icon-illustrator::before {
content: "\e002"
}

.gn-icon-archive::before {
content: "\e00d"
}

.gn-icon-article::before {
content: "\e003"
}

.gn-icon-pictures::before {
content: "\e008"
}

.gn-icon-videos::before {
content: "\e009"
}

/* if an icon anchor has a span, hide the span */

.gn-icon span {
width: 0;
height: 0;
display: block;
overflow: hidden;
}

.gn-icon-menu::before {
margin-left: -15px;
vertical-align: -2px;
width: 30px;
height: 3px;
background: #5f6f81;
box-shadow: 0 3px white, 0 -6px #5f6f81, 0 -9px white, 0 -12px #5f6f81;
content: '';
}

.no-touch .gn-icon-menu:hover::before,
.no-touch .gn-icon-menu.gn-selected:hover::before {
background: white;
box-shadow: 0 3px #5f6f81, 0 -6px white, 0 -9px #5f6f81, 0 -12px white;
}

.gn-icon-menu.gn-selected::before {
background: #5993cd;
box-shadow: 0 3px white, 0 -6px #5993cd, 0 -9px white, 0 -12px #5993cd;
}

/* styles for opening menu */

.gn-menu-wrapper.gn-open-all,
.gn-menu-wrapper.gn-open-part {
-webkit-transform: translateX(0px);
-moz-transform: translateX(0px);
transform: translateX(0px);
}

.gn-menu-wrapper.gn-open-all {
width: 340px
}

.gn-menu-wrapper.gn-open-all .gn-submenu li {
height: 60px
}

@media screen and (max-width: 422px) {
.gn-menu-wrapper.gn-open-all {
-webkit-transform: translateX(0px);
-moz-transform: translateX(0px);
transform: translateX(0px);
width: 100%;
}

.gn-menu-wrapper.gn-open-all .gn-scroller {
width: 130%
}
}
@@ -0,0 +1,145 @@
@import url(http://fonts.googleapis.com/css?family=Lato:300,400,700);
@font-face {
font-family: 'codropsicons';
src:url('../fonts/codropsicons/codropsicons.eot');
src:url('../fonts/codropsicons/codropsicons.eot?#iefix') format('embedded-opentype'),
url('../fonts/codropsicons/codropsicons.woff') format('woff'),
url('../fonts/codropsicons/codropsicons.ttf') format('truetype'),
url('../fonts/codropsicons/codropsicons.svg#codropsicons') format('svg');
font-weight: normal;
font-style: normal;
}

body {
background: #34495e;
}

.container > header,
.codrops-top {
color: #fff;
font-family: 'Lato', Arial, sans-serif;
}

.container > header {
margin: 0 auto;
padding: 12em 2em;
padding-left: 370px;
background: rgba(0,0,0,0.05);
}

.container > header a {
color: #566473;
text-decoration: none;
outline: none;
}

.container > header a:hover {
color: #4f7bab;
}

.container > header h1 {
font-size: 3.2em;
line-height: 1.3;
margin: 0;
font-weight: 300;
}

.container > header span {
display: block;
font-size: 55%;
color: #74818e;
padding: 0 0 0.6em 0.1em;
}

/* To Navigation Style */
.codrops-top {
background: #fff;
background: rgba(255, 255, 255, 0.6);
text-transform: uppercase;
width: 100%;
font-size: 0.69em;
line-height: 2.2;
}

.codrops-top a {
text-decoration: none;
padding: 0 1em;
letter-spacing: 0.1em;
color: #888;
display: inline-block;
}

.codrops-top a:hover {
background: rgba(255,255,255,0.95);
color: #333;
}

.codrops-top span.right {
float: right;
}

.codrops-top span.right a {
float: left;
display: block;
}

.codrops-icon:before {
font-family: 'codropsicons';
margin: 0 4px;
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
-webkit-font-smoothing: antialiased;
}

.codrops-icon-drop:before {
content: "\e001";
}

.codrops-icon-prev:before {
content: "\e004";
}

/* Demo Buttons Style */
.codrops-demos {
padding-top: 1em;
font-size: 0.9em;
}

.codrops-demos a {
text-decoration: none;
outline: none;
display: inline-block;
margin: 0.5em;
padding: 0.7em 1.1em;
border: 3px solid #b1aea6;
color: #b1aea6;
font-weight: 700;
}

.codrops-demos a:hover,
.codrops-demos a.current-demo,
.codrops-demos a.current-demo:hover {
border-color: #89867e;
color: #89867e;
}

@media screen and (max-width: 1025px) {
.container > header {
margin: 0 auto;
padding: 120px 50px;
font-size: 70%;
text-align: right;
}
}

@media screen and (max-width: 740px) {

.codrops-icon span {
display: none;
}

}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,44 @@
@import url(animate.css);
@import url(bootstrap.css);
@import url(font-awesome.min.css);
@import url(http://fonts.googleapis.com/css?family=Open+Sans);
@import url(http://fonts.googleapis.com/css?family=Muli);
@import url(http://fonts.googleapis.com/css?family=Pacifico);
@import url(metro-bootstrap.min.css);
.jumbotron
{
height: 100%;
background-color: #FFF
}

.nav
{
padding-top: 5;
width: 100%;
padding-bottom: 5;
}

.nav li
{
text-decoration: none;
list-style-type: none;
display: inline;
}

.logo
{
font-size: 20px
}

.notlogo
{
margin-left: 20px
}

.col-md-3
{
height: 100%;
background-image: url(../img/legion.png);
background-size: contain;
background-repeat: no-repeat;
}
BIN +73.4 KB fonts/FontAwesome.otf
Binary file not shown.
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
BIN +1.62 KB img/Logo.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN +38.5 KB img/Thumbs.db
Binary file not shown.
BIN +36.7 KB img/legion.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

Large diffs are not rendered by default.

@@ -0,0 +1,31 @@
[{
"name":"Andy Kamath",
"aboutme":"I'm a creative full-stack web developer as well as C# developer. I like to make websites and code for people. I am also a sophomore and Honors/AP student pursuing a career in Computer Science",
"projects":[{
"name": "Advicify",
"GitHub link": "http://github.com/hackgician/advicify",
"skills utilized": "Bootstrap framework for HTML, Laravel framework for PHP, Nginx server, MySQL Database, jQuery.js, HTML5, CSS, and Javascript",
"description": "This website was made as a forum for sad people who just need to talk about stuff and want other people to listen",
},
{
"name": "Albert Engine",
"website link": "http://albert.cf",
"skills utilized": "PHP, Heroku, Bootstrap framework for HTML, jQuery.js, HTML5, CSS, and Javascript",
"description": "Instant-answer search-engine",
},
{
"name": "Bae Button",
"website link": "http://andykamath.com/bae",
"skills utilized": "Bootstrap framework for HTML, jQuery.js, HTML5, CSS, and Javascript",
"description": "Bae button. Nuff said",
},
{
"name": "Blue",
"website link": "http://andykamath.com/BlueWebsite",
"skills utilized": "Bootstrap framework for HTML, jQuery.js, HTML5, CSS, and Javascript",
"description": "Website template for potential customers"
},
{
"name"
}]
}]

Large diffs are not rendered by default.

Large diffs are not rendered by default.

@@ -0,0 +1,80 @@
/*!
* classie - class helper functions
* from bonzo https://github.com/ded/bonzo
*
* classie.has( elem, 'my-class' ) -> true/false
* classie.add( elem, 'my-new-class' )
* classie.remove( elem, 'my-unwanted-class' )
* classie.toggle( elem, 'my-class' )
*/

/*jshint browser: true, strict: true, undef: true */
/*global define: false */

( function( window ) {

'use strict';

// class helper functions from bonzo https://github.com/ded/bonzo

function classReg( className ) {
return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
}

// classList support for class management
// altho to be fair, the api sucks because it won't accept multiple classes at once
var hasClass, addClass, removeClass;

if ( 'classList' in document.documentElement ) {
hasClass = function( elem, c ) {
return elem.classList.contains( c );
};
addClass = function( elem, c ) {
elem.classList.add( c );
};
removeClass = function( elem, c ) {
elem.classList.remove( c );
};
}
else {
hasClass = function( elem, c ) {
return classReg( c ).test( elem.className );
};
addClass = function( elem, c ) {
if ( !hasClass( elem, c ) ) {
elem.className = elem.className + ' ' + c;
}
};
removeClass = function( elem, c ) {
elem.className = elem.className.replace( classReg( c ), ' ' );
};
}

function toggleClass( elem, c ) {
var fn = hasClass( elem, c ) ? removeClass : addClass;
fn( elem, c );
}

var classie = {
// full names
hasClass: hasClass,
addClass: addClass,
removeClass: removeClass,
toggleClass: toggleClass,
// short names
has: hasClass,
add: addClass,
remove: removeClass,
toggle: toggleClass
};

// transport
if ( typeof define === 'function' && define.amd ) {
// AMD
define( classie );
} else {
// browser global
window.classie = classie;
}

})( window );
@@ -0,0 +1,92 @@
/**
* gnmenu.js v1.0.0
* http://www.codrops.com
*
* Licensed under the MIT license.
* http://www.opensource.org/licenses/mit-license.php
*
* Copyright 2013, Codrops
* http://www.codrops.com
*/
;( function( window ) {

'use strict';

// http://stackoverflow.com/a/11381730/989439
function mobilecheck() {
var check = false;
(function(a){if(/(android|ipad|playbook|silk|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);
return check;
}

function gnMenu( el, options ) {
this.el = el;
this._init();
}

gnMenu.prototype = {
_init : function() {
this.trigger = this.el.querySelector( 'a.gn-icon-menu' );
this.menu = this.el.querySelector( 'nav.gn-menu-wrapper' );
this.isMenuOpen = false;
this.eventtype = mobilecheck() ? 'touchstart' : 'click';
this._initEvents();

var self = this;
this.bodyClickFn = function() {
self._closeMenu();
this.removeEventListener( self.eventtype, self.bodyClickFn );
};
},
_initEvents : function() {
var self = this;

if( !mobilecheck() ) {
this.trigger.addEventListener( 'mouseover', function(ev) { self._openIconMenu(); } );
this.trigger.addEventListener( 'mouseout', function(ev) { self._closeIconMenu(); } );

this.menu.addEventListener( 'mouseover', function(ev) {
self._openMenu();
document.addEventListener( self.eventtype, self.bodyClickFn );
} );
}
this.trigger.addEventListener( this.eventtype, function( ev ) {
ev.stopPropagation();
ev.preventDefault();
if( self.isMenuOpen ) {
self._closeMenu();
document.removeEventListener( self.eventtype, self.bodyClickFn );
}
else {
self._openMenu();
document.addEventListener( self.eventtype, self.bodyClickFn );
}
} );
this.menu.addEventListener( this.eventtype, function(ev) { ev.stopPropagation(); } );
},
_openIconMenu : function() {
classie.add( this.menu, 'gn-open-part' );
},
_closeIconMenu : function() {
classie.remove( this.menu, 'gn-open-part' );
},
_openMenu : function() {
if( this.isMenuOpen ) return;
classie.add( this.trigger, 'gn-selected' );
this.isMenuOpen = true;
classie.add( this.menu, 'gn-open-all' );
this._closeIconMenu();
},
_closeMenu : function() {
if( !this.isMenuOpen ) return;
classie.remove( this.trigger, 'gn-selected' );
this.isMenuOpen = false;
classie.remove( this.menu, 'gn-open-all' );
this._closeIconMenu();
}
}

// add to global namespace
window.gnMenu = gnMenu;

} )( window );

Large diffs are not rendered by default.

2,980 js/ripple.js

Large diffs are not rendered by default.

@@ -0,0 +1,16 @@
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {

var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
this.toggleClass("active");
});
});
@@ -0,0 +1,9 @@
$(".navitem").click(function(e) {
e.preventDefault();
$("#sidebar-wrapper").toggleClass("active");
});

$("#menu-toggle").click(function(e) {
e.preventDefault();
$("#sidebar-wrapper").toggleClass("active");
});
@@ -0,0 +1,333 @@
// The MIT License (MIT)

// Typed.js | Copyright (c) 2014 Matt Boldt | www.mattboldt.com

// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.




!function($){

"use strict";

var Typed = function(el, options){

// chosen element to manipulate text
this.el = $(el);

// options
this.options = $.extend({}, $.fn.typed.defaults, options);

// text content of element
this.baseText = this.el.text() || this.el.attr('placeholder') || '';

// typing speed
this.typeSpeed = this.options.typeSpeed;

// add a delay before typing starts
this.startDelay = this.options.startDelay;

// backspacing speed
this.backSpeed = this.options.backSpeed;

// amount of time to wait before backspacing
this.backDelay = this.options.backDelay;

// input strings of text
this.strings = this.options.strings;

// character number position of current string
this.strPos = 0;

// current array position
this.arrayPos = 0;

// number to stop backspacing on.
// default 0, can change depending on how many chars
// you want to remove at the time
this.stopNum = 0;

// Looping logic
this.loop = this.options.loop;
this.loopCount = this.options.loopCount;
this.curLoop = 0;

// for stopping
this.stop = false;

// show cursor
this.showCursor = this.isInput ? false : this.options.showCursor;

// custom cursor
this.cursorChar = this.options.cursorChar;

// attribute to type
this.isInput = this.el.is('input');
this.attr = this.options.attr || (this.isInput ? 'placeholder' : null);

// All systems go!
this.build();
};

Typed.prototype = {

constructor: Typed

, init: function(){
// begin the loop w/ first current string (global self.string)
// current string will be passed as an argument each time after this
var self = this;
self.timeout = setTimeout(function() {
// Start typing
self.typewrite(self.strings[self.arrayPos], self.strPos);
}, self.startDelay);
}

, build: function(){
// Insert cursor
if (this.showCursor === true){
this.cursor = $("<span class=\"typed-cursor\">" + this.cursorChar + "</span>");
this.el.after(this.cursor);
}
this.init();
}

// pass current string state to each function, types 1 char per call
, typewrite: function(curString, curStrPos){
// exit when stopped
if(this.stop === true)
return;

// varying values for setTimeout during typing
// can't be global since number changes each time loop is executed
var humanize = Math.round(Math.random() * (100 - 30)) + this.typeSpeed;
var self = this;

// ------------- optional ------------- //
// backpaces a certain string faster
// ------------------------------------ //
// if (self.arrayPos == 1){
// self.backDelay = 50;
// }
// else{ self.backDelay = 500; }

// contain typing function in a timeout humanize'd delay
self.timeout = setTimeout(function() {
// check for an escape character before a pause value
// format: \^\d+ .. eg: ^1000 .. should be able to print the ^ too using ^^
// single ^ are removed from string
var charPause = 0;
var substr = curString.substr(curStrPos);
if (substr.charAt(0) === '^') {
var skip = 1; // skip atleast 1
if(/^\^\d+/.test(substr)) {
substr = /\d+/.exec(substr)[0];
skip += substr.length;
charPause = parseInt(substr);
}

// strip out the escape character and pause value so they're not printed
curString = curString.substring(0,curStrPos)+curString.substring(curStrPos+skip);
}

// timeout for any pause after a character
self.timeout = setTimeout(function() {
if(curStrPos === curString.length) {
// fires callback function
self.options.onStringTyped(self.arrayPos);

// is this the final string
if(self.arrayPos === self.strings.length-1) {
// animation that occurs on the last typed string
self.options.callback();

self.curLoop++;

// quit if we wont loop back
if(self.loop === false || self.curLoop === self.loopCount)
return;
}

self.timeout = setTimeout(function(){
self.backspace(curString, curStrPos);
}, self.backDelay);
} else {

/* call before functions if applicable */
if(curStrPos === 0)
self.options.preStringTyped(self.arrayPos);

// start typing each new char into existing string
// curString: arg, self.baseText: original text inside element
var nextString = self.baseText + curString.substr(0, curStrPos+1);
if (self.attr) {
self.el.attr(self.attr, nextString);
} else {
self.el.text(nextString);
}

// add characters one by one
curStrPos++;
// loop the function
self.typewrite(curString, curStrPos);
}
// end of character pause
}, charPause);

// humanized value for typing
}, humanize);

}

, backspace: function(curString, curStrPos){
// exit when stopped
if (this.stop === true) {
return;
}

// varying values for setTimeout during typing
// can't be global since number changes each time loop is executed
var humanize = Math.round(Math.random() * (100 - 30)) + this.backSpeed;
var self = this;

self.timeout = setTimeout(function() {

// ----- this part is optional ----- //
// check string array position
// on the first string, only delete one word
// the stopNum actually represents the amount of chars to
// keep in the current string. In my case it's 14.
// if (self.arrayPos == 1){
// self.stopNum = 14;
// }
//every other time, delete the whole typed string
// else{
// self.stopNum = 0;
// }

// ----- continue important stuff ----- //
// replace text with base text + typed characters
var nextString = self.baseText + curString.substr(0, curStrPos);
if (self.attr) {
self.el.attr(self.attr, nextString);
} else {
self.el.text(nextString);
}

// if the number (id of character in current string) is
// less than the stop number, keep going
if (curStrPos > self.stopNum){
// subtract characters one by one
curStrPos--;
// loop the function
self.backspace(curString, curStrPos);
}
// if the stop number has been reached, increase
// array position to next string
else if (curStrPos <= self.stopNum) {
self.arrayPos++;

if(self.arrayPos === self.strings.length) {
self.arrayPos = 0;
self.init();
} else
self.typewrite(self.strings[self.arrayPos], curStrPos);
}

// humanized value for typing
}, humanize);

}

// Start & Stop currently not working

// , stop: function() {
// var self = this;

// self.stop = true;
// clearInterval(self.timeout);
// }

// , start: function() {
// var self = this;
// if(self.stop === false)
// return;

// this.stop = false;
// this.init();
// }

// Reset and rebuild the element
, reset: function(){
var self = this;
clearInterval(self.timeout);
var id = this.el.attr('id');
this.el.after('<span id="' + id + '"/>')
this.el.remove();
this.cursor.remove();
// Send the callback
self.options.resetCallback();
}

};

$.fn.typed = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('typed')
, options = typeof option == 'object' && option;
if (!data) $this.data('typed', (data = new Typed(this, options)));
if (typeof option == 'string') data[option]();
});
};

$.fn.typed.defaults = {
strings: ["These are the default values...", "You know what you should do?", "Use your own!", "Have a great day!"],
// typing speed
typeSpeed: 0,
// time before typing starts
startDelay: 0,
// backspacing speed
backSpeed: 0,
// time before backspacing
backDelay: 500,
// loop
loop: false,
// false = infinite
loopCount: false,
// show cursor
showCursor: true,
// character for cursor
cursorChar: "|",
// attribute to type (null == text)
attr: null,
// call when done callback function
callback: function() {},
// starting callback function before each string
preStringTyped: function() {},
//callback for every typed string
onStringTyped: function() {},
// callback for reset
resetCallback: function() {}
};


}(window.jQuery);

@@ -0,0 +1,16 @@
// Bordered & Pulled
// -------------------------

.@{fa-css-prefix}-border {
padding: .2em .25em .15em;
border: solid .08em @fa-border-color;
border-radius: .1em;
}

.pull-right { float: right; }
.pull-left { float: left; }

.@{fa-css-prefix} {
&.pull-left { margin-right: .3em; }
&.pull-right { margin-left: .3em; }
}
@@ -0,0 +1,12 @@
// Base Class Definition
// -------------------------

.@{fa-css-prefix} {
display: inline-block;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@@ -0,0 +1,6 @@
// Fixed Width Icons
// -------------------------
.@{fa-css-prefix}-fw {
width: (18em / 14);
text-align: center;
}
@@ -0,0 +1,17 @@
/*!
* Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/

@import "variables.less";
@import "mixins.less";
@import "path.less";
@import "core.less";
@import "larger.less";
@import "fixed-width.less";
@import "list.less";
@import "bordered-pulled.less";
@import "spinning.less";
@import "rotated-flipped.less";
@import "stacked.less";
@import "icons.less";

Large diffs are not rendered by default.

@@ -0,0 +1,13 @@
// Icon Sizes
// -------------------------

/* makes the font 33% larger relative to the icon container */
.@{fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.@{fa-css-prefix}-2x { font-size: 2em; }
.@{fa-css-prefix}-3x { font-size: 3em; }
.@{fa-css-prefix}-4x { font-size: 4em; }
.@{fa-css-prefix}-5x { font-size: 5em; }
@@ -0,0 +1,19 @@
// List Icons
// -------------------------

.@{fa-css-prefix}-ul {
padding-left: 0;
margin-left: @fa-li-width;
list-style-type: none;
> li { position: relative; }
}
.@{fa-css-prefix}-li {
position: absolute;
left: -@fa-li-width;
width: @fa-li-width;
top: (2em / 14);
text-align: center;
&.@{fa-css-prefix}-lg {
left: -@fa-li-width + (4em / 14);
}
}
@@ -0,0 +1,20 @@
// Mixins
// --------------------------

.fa-icon-rotate(@degrees, @rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
-webkit-transform: rotate(@degrees);
-moz-transform: rotate(@degrees);
-ms-transform: rotate(@degrees);
-o-transform: rotate(@degrees);
transform: rotate(@degrees);
}

.fa-icon-flip(@horiz, @vert, @rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
-webkit-transform: scale(@horiz, @vert);
-moz-transform: scale(@horiz, @vert);
-ms-transform: scale(@horiz, @vert);
-o-transform: scale(@horiz, @vert);
transform: scale(@horiz, @vert);
}
@@ -0,0 +1,14 @@
/* FONT PATH
* -------------------------- */

@font-face {
font-family: 'FontAwesome';
src: ~"url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}')";
src: ~"url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype')",
~"url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff')",
~"url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype')",
~"url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg')";
// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
}
@@ -0,0 +1,9 @@
// Rotated & Flipped Icons
// -------------------------

.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }

.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
@@ -0,0 +1,32 @@
// Spinning Icons
// --------------------------

.@{fa-css-prefix}-spin {
-webkit-animation: spin 2s infinite linear;
-moz-animation: spin 2s infinite linear;
-o-animation: spin 2s infinite linear;
animation: spin 2s infinite linear;
}

@-moz-keyframes spin {
0% { -moz-transform: rotate(0deg); }
100% { -moz-transform: rotate(359deg); }
}
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(359deg); }
}
@-o-keyframes spin {
0% { -o-transform: rotate(0deg); }
100% { -o-transform: rotate(359deg); }
}
@keyframes spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@@ -0,0 +1,20 @@
// Stacked Icons
// -------------------------

.@{fa-css-prefix}-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
.@{fa-css-prefix}-inverse { color: @fa-inverse; }

Large diffs are not rendered by default.

@@ -0,0 +1,16 @@
// Bordered & Pulled
// -------------------------

.#{$fa-css-prefix}-border {
padding: .2em .25em .15em;
border: solid .08em $fa-border-color;
border-radius: .1em;
}

.pull-right { float: right; }
.pull-left { float: left; }

.#{$fa-css-prefix} {
&.pull-left { margin-right: .3em; }
&.pull-right { margin-left: .3em; }
}
@@ -0,0 +1,12 @@
// Base Class Definition
// -------------------------

.#{$fa-css-prefix} {
display: inline-block;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@@ -0,0 +1,6 @@
// Fixed Width Icons
// -------------------------
.#{$fa-css-prefix}-fw {
width: (18em / 14);
text-align: center;
}

Large diffs are not rendered by default.

@@ -0,0 +1,13 @@
// Icon Sizes
// -------------------------

/* makes the font 33% larger relative to the icon container */
.#{$fa-css-prefix}-lg {
font-size: (4em / 3);
line-height: (3em / 4);
vertical-align: -15%;
}
.#{$fa-css-prefix}-2x { font-size: 2em; }
.#{$fa-css-prefix}-3x { font-size: 3em; }
.#{$fa-css-prefix}-4x { font-size: 4em; }
.#{$fa-css-prefix}-5x { font-size: 5em; }
@@ -0,0 +1,19 @@
// List Icons
// -------------------------

.#{$fa-css-prefix}-ul {
padding-left: 0;
margin-left: $fa-li-width;
list-style-type: none;
> li { position: relative; }
}
.#{$fa-css-prefix}-li {
position: absolute;
left: -$fa-li-width;
width: $fa-li-width;
top: (2em / 14);
text-align: center;
&.#{$fa-css-prefix}-lg {
left: -$fa-li-width + (4em / 14);
}
}
@@ -0,0 +1,20 @@
// Mixins
// --------------------------

@mixin fa-icon-rotate($degrees, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-webkit-transform: rotate($degrees);
-moz-transform: rotate($degrees);
-ms-transform: rotate($degrees);
-o-transform: rotate($degrees);
transform: rotate($degrees);
}

@mixin fa-icon-flip($horiz, $vert, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-webkit-transform: scale($horiz, $vert);
-moz-transform: scale($horiz, $vert);
-ms-transform: scale($horiz, $vert);
-o-transform: scale($horiz, $vert);
transform: scale($horiz, $vert);
}
@@ -0,0 +1,14 @@
/* FONT PATH
* -------------------------- */

@font-face {
font-family: 'FontAwesome';
src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
//src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
}
@@ -0,0 +1,9 @@
// Rotated & Flipped Icons
// -------------------------

.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }

.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
@@ -0,0 +1,32 @@
// Spinning Icons
// --------------------------

.#{$fa-css-prefix}-spin {
-webkit-animation: spin 2s infinite linear;
-moz-animation: spin 2s infinite linear;
-o-animation: spin 2s infinite linear;
animation: spin 2s infinite linear;
}

@-moz-keyframes spin {
0% { -moz-transform: rotate(0deg); }
100% { -moz-transform: rotate(359deg); }
}
@-webkit-keyframes spin {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(359deg); }
}
@-o-keyframes spin {
0% { -o-transform: rotate(0deg); }
100% { -o-transform: rotate(359deg); }
}
@keyframes spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@@ -0,0 +1,20 @@
// Stacked Icons
// -------------------------

.#{$fa-css-prefix}-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
.#{$fa-css-prefix}-inverse { color: $fa-inverse; }

Large diffs are not rendered by default.

@@ -0,0 +1,17 @@
/*!
* Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/

@import "variables";
@import "mixins";
@import "path";
@import "core";
@import "larger";
@import "fixed-width";
@import "list";
@import "bordered-pulled";
@import "spinning";
@import "rotated-flipped";
@import "stacked";
@import "icons";
@@ -0,0 +1,85 @@

<br><br>
<h1><strong><a href="//andykamath.com/BlueWebsite">Blue</a></strong></h1>
<h2>Skills utilized: Bootstrap framework for HTML, jQuery.js, HTML5, CSS, and Javascript</h2>
<p>This website was made as a template for restaurants that would potentially want a website</p>
<br><br>
<h1><strong><a href="https://www.youtube.com/watch?v=1e3-3rNt5rE">Chucky</a></strong></h1>
<h2>Skills utilized: C#, Azure, SQL Server</h2>
<p>A simple desktop assistant</p>
<br><br>
<h1><strong><a href="//github.com/andykamath/iluvyoumommy">I Love You Mommy</a></strong></h1>
<h2>Skills utilized: C# for Windows Phone 8/8.1, XAML</h2>
<p>Comes up with pre-made texts to automatically respond to your mother when she texts you</p>
<br><br>
<h1><strong><a href="//andykamath.com/instagram">Instagram Collater</a></strong></h1>
<h2>Skills utilized: Instagram JS API, Instafeed.js, Bootstrap framework for HTML, jQuery.js, HTML5, CSS, and Javascript</h2>
<p>This website collates all your Instagram posts into a nice website</p>
<br><br>
<h1><strong><a href="//github.com/andykamath/MORGAN">MORGAN</a></strong></h1>
<h2>Skills utilized: C#</h2>
<p>My first real program made for a science fair</p>
<br><br>
<h1><strong><a href="//github.com/andykamath/passwords">Passwords</a></strong></h1>
<h2>Skills utilized: C#, Cryptography</h2>
<p>A C# Console application used to encrypt, decrypt, and manage passwords</p>
<br><br>
<h1><strong><a href="//phsjcl.com">Providence JCL</a></strong></h1>
<h2>Skills utilized: Bootstrap framework for HTML, jQuery.js, HTML5, CSS, and Javascript</h2>
<p>This website was made for my school's Junior Classical League, or Latin Club, again of which I was appointed Webmaster</p>
<br><br>
<a href="//andykamath.com/phstsa"><h1><strong>Providence TSA</strong></h1></a>
<h2>Skills utilized: Metro-Bootstrap framework for HTML, jQuery.js, HTML5, CSS, and Javascript</h2>
<p><a href="//andykamath.com/phstsa">This website</a> was made for my school's Technology Students Association, of which I am participating in the Webmaster and Software Development categories to further improve my skills and maybe earn awards</p>
<br><br>
<h1><strong><a href="//andykamath.com/stopthebullying">Stop The Bullying</a></strong></h1>
<h2>Skills utilized: Bootstrap framework for HTML, jQuery.js, HTML5, CSS, and Javascript</h2>
<p>The week before Winter Break, there was a threat to our school that made it seem like the suspect was bullied. I made this website to help people come up with ways to reduce bullying in schools</p>
<br><br>
<h1><strong><a href="//github.com/andykamath/TaskHat">TaskHat</a></strong></h1>
<h2>Skills utilized: C#, System.IO class to read/write from Text File</h2>
<p>Made to manage tasks easily - and then pick a random task when you want one</p>
<br><br>
</div>
</div>
<div class="contactme">
<h1>Contact me!</h1>
<p>Email: andy@hackgician.net</p>
<a href="//github.com/andykamath">Github</a>
<a href="//youtube.com/MrCandonce">YouTube</a>
<a href="//medium.com/@andykamath">Blog</a>
<a href="//instagram.com/baendy">Instagram</a>
<a href="//twitter.com/baesedandy">Twitter</a>
</div>
</div>
<script type="text/javascript">
$("#loader").show();
$("#wholething").hide();
$(window).load(function() {
$("#loader").hide();
$("#wholething").show();
});
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
});
var text = ['I\'m a sophomore', 'I\'m a full-stack web developer', 'I\'m an Entrepreneur', 'I\'m a .NET developer', 'I\'m a musician', 'I\'m a mathematician', 'I\'m a scientist', 'I\'m pentalingual'];
i = 0,

setInterval(function ()
{
$("#about").text(text[i++ % text.length]);
}, 1000);
</script>
</body>
</html>