From fdbc5851c5a748fa021a609fb33870cda4c75bdf Mon Sep 17 00:00:00 2001 From: Manu Mtz-Almeida Date: Fri, 20 Jun 2014 22:38:10 +0200 Subject: [PATCH] Adds website --- README.md | 277 ---- auth.go | 83 -- css/gin.webflow.css | 607 ++++++++ css/normalize.css | 356 +++++ css/webflow.css | 1225 ++++++++++++++++ examples/example_basic.go | 55 - gin.go | 377 ----- images/12-quotes.png | Bin 0 -> 1509 bytes images/Git-Icon-Black2.png | Bin 0 -> 2524 bytes images/email.png | Bin 0 -> 1460 bytes images/gin.jpg | Bin 0 -> 107408 bytes images/globe2.png | Bin 0 -> 2780 bytes images/graph.png | Bin 0 -> 57074 bytes images/idea2.png | Bin 0 -> 3775 bytes images/pull2.png | Bin 0 -> 6666 bytes images/sample1.png | Bin 0 -> 39881 bytes images/sample11.png | Bin 0 -> 21418 bytes images/sentry2.png | Bin 0 -> 2285 bytes images/webclip-gallio.png | Bin 0 -> 3266 bytes index.html | 184 +++ js/modernizr.js | 8 + js/webflow.js | 2775 ++++++++++++++++++++++++++++++++++++ logger.go | 20 - recovery.go | 97 -- validation.go | 56 - 25 files changed, 5155 insertions(+), 965 deletions(-) delete mode 100644 README.md delete mode 100644 auth.go create mode 100755 css/gin.webflow.css create mode 100755 css/normalize.css create mode 100755 css/webflow.css delete mode 100644 examples/example_basic.go delete mode 100644 gin.go create mode 100755 images/12-quotes.png create mode 100755 images/Git-Icon-Black2.png create mode 100755 images/email.png create mode 100755 images/gin.jpg create mode 100755 images/globe2.png create mode 100755 images/graph.png create mode 100755 images/idea2.png create mode 100755 images/pull2.png create mode 100755 images/sample1.png create mode 100755 images/sample11.png create mode 100755 images/sentry2.png create mode 100755 images/webclip-gallio.png create mode 100755 index.html create mode 100755 js/modernizr.js create mode 100755 js/webflow.js delete mode 100644 logger.go delete mode 100644 recovery.go delete mode 100644 validation.go diff --git a/README.md b/README.md deleted file mode 100644 index f910801f..00000000 --- a/README.md +++ /dev/null @@ -1,277 +0,0 @@ -#Gin Web Framework -Gin is a web framework written in Golang. It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity, you will love Gin. -[Check out the official web site](http://gingonic.github.com) - -## Start using it -Run: - -``` -go get github.com/gin-gonic/gin -``` -Then import it in your Golang code: - -``` -import "github.com/gin-gonic/gin" -``` - - -##API Examples - -#### Create most basic PING/PONG HTTP endpoint -``` -func main() { - // Creates a gin router + logger and recovery (crash-free) middlwares - r := gin.Default() - r.GET("/ping", func(c *gin.Context){ - c.String("pong") - }) - - r.POST("/somePost", posting) - r.PUT("/somePut", putting) - r.DELETE("/someDelete", deleting) - r.PATCH("/somePATCH", patching) - - // Listen and server on 0.0.0.0:8080 - r.Run(":8080") -} -``` - -#### Parameters in path - -``` -func main() { - r := gin.Default() - - r.GET("/user/:name", func(c *gin.Context) { - name := c.Params.ByName("name") - message := "Hello "+name - c.String(200, message) - }) -} -``` - - -#### Grouping routes -``` -func main() { - r := gin.Default() - - // Simple group: v1 - v1 := r.Group("/v1") - { - v1.POST("/login", loginEndpoint) - v1.POST("/submit", submitEndpoint) - v1.POST("/read", readEndpoint) - } - - // Simple group: v1 - v2 := r.Group("/v2") - { - v2.POST("/login", loginEndpoint) - v2.POST("/submit"", submitEndpoint) - v2.POST("/read"", readEndpoint) - } - - // Listen and server on 0.0.0.0:8080 - r.Run(":8080") -} -``` - - -#### Blank Gin without middlewares by default - -Use - -``` -r := gin.New() -``` -instead of - -``` -r := gin.Default() -``` - - -#### Using middlewares -``` -func main() { - // Creates a router without any middlware by default - r := gin.New() - - // Global middlwares - r.Use(gin.Logger()) - r.Use(gin.Recovery()) - - // Per route middlwares, you can add as many as you desire. - r.GET("/benchmark", MyBenchLogger(), benchEndpoint) - - // Authorization group - // authorized := r.Group("/", AuthRequired()) - // exactly the same than: - authorized := r.Group("/") - // per group middlwares! in this case we use the custom created - // AuthRequired() middlware just in the "authorized" group. - authorized.Use(AuthRequired()) - { - authorized.Use.POST("/login", loginEndpoint) - authorized.Use.POST("/submit", submitEndpoint) - authorized.Use.POST("/read", readEndpoint) - - // nested group - testing := authorized.Group("testing") - testing.GET("/analytics", analyticsEndpoint) - } - - // Listen and server on 0.0.0.0:8080 - r.Run(":8080") -} -``` - - -#### JSON parsing and validation -``` - -type LoginJSON struct { - User string `json:"user" binding:"required"` - Password string `json:"password" binding:"required"` -} - -func main() { - r := gin.Default() - - r.POST("/login", func(c *gin.Context) { - var json LoginJSON - - // If EnsureBody returns false, it will write automatically the error - // in the HTTP stream and return a 400 error. If you want custom error - // handling you should use: c.ParseBody(interface{}) error - if c.EnsureBody(&json) { - if json.User=="manu" && json.Password=="123" { - c.JSON(200, gin.H{"status": "you are logged in"}) - }else{ - c.JSON(401, gin.H{"status": "unauthorized"}) - } - } - }) -} -``` - -#### XML, and JSON rendering - -``` -func main() { - r := gin.Default() - - // gin.H is a shortcup for map[string]interface{} - r.GET("/someJSON", func(c *gin.Context) { - c.JSON(200, gin.H{"message": "hey", "status": 200}) - }) - - r.GET("/moreJSON", func(c *gin.Context) { - // You also can use a struct - var msg struct { - Message string - Status int - } - msg.Message = "hey" - msg.Status = 200 - c.JSON(200, msg.Status) - }) - - r.GET("/someXML", func(c *gin.Context) { - c.XML(200, gin.H{"message": "hey", "status": 200}) - }) -} -``` - - -####HTML rendering - -Using LoadHTMLTemplates() - -``` -func main() { - r := gin.Default() - r.LoadHTMLTemplates("templates/*") - r.GET("index", func(c *gin.Context) { - obj := gin.h{"title": "Main website"} - c.HTML(200, "templates/index.tmpl", obj) - }) -} -``` - -You can also use your own html template render - -``` -import "html/template" -func main() { - r := gin.Default() - html := template.ParseFiles("file1", "file2") - r.HTMLTemplates = html -} -``` - - -#### Custom Middlewares - -``` -func Logger() gin.HandlerFunc { - return func(c *gin.Context) { - t : time.Now() - - // Set example variable - c.Set("example", "12345") - - // before request - - c.Next() - - // after request - latency := time.Since(t) - log.Print(latency) - } -} - -func main() { - r := gin.New() - r.Use(Logger()) - - r.GET("test", func(c *gin.Context){ - example := r.Get("example").(string) - - // it would print: "12345" - log.Println(example) - }) -``` - - - - -#### Custom HTTP configuration - -Do not use the `Run()` method, instead use this: - -``` -func main() { - router := gin.Default() - http.ListenAndServe(":8080", router) -} -``` -or - -``` -func main() { - router := gin.Default() - - s := &http.Server{ - Addr: ":8080", - Handler: router, - ReadTimeout: 10 * time.Second, - WriteTimeout: 10 * time.Second, - MaxHeaderBytes: 1 << 20, - } - s.ListenAndServe() -} -``` - - diff --git a/auth.go b/auth.go deleted file mode 100644 index c6a5291a..00000000 --- a/auth.go +++ /dev/null @@ -1,83 +0,0 @@ -package gin - -import ( - "crypto/subtle" - "encoding/base64" - "errors" - "sort" -) - -type ( - BasicAuthPair struct { - Code string - User string - } - Account struct { - User string - Password string - } - - Accounts []Account - Pairs []BasicAuthPair -) - -func (a Pairs) Len() int { return len(a) } -func (a Pairs) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -func (a Pairs) Less(i, j int) bool { return a[i].Code < a[j].Code } - -func processCredentials(accounts Accounts) (Pairs, error) { - if len(accounts) == 0 { - return nil, errors.New("Empty list of authorized credentials.") - } - pairs := make(Pairs, 0, len(accounts)) - for _, account := range accounts { - if len(account.User) == 0 || len(account.Password) == 0 { - return nil, errors.New("User or password is empty") - } - base := account.User + ":" + account.Password - code := "Basic " + base64.StdEncoding.EncodeToString([]byte(base)) - pairs = append(pairs, BasicAuthPair{code, account.User}) - } - // We have to sort the credentials in order to use bsearch later. - sort.Sort(pairs) - return pairs, nil -} - -func searchCredential(pairs Pairs, auth string) string { - if len(auth) == 0 { - return "" - } - // Search user in the slice of allowed credentials - r := sort.Search(len(pairs), func(i int) bool { return pairs[i].Code >= auth }) - - if r < len(pairs) && subtle.ConstantTimeCompare([]byte(pairs[r].Code), []byte(auth)) == 1 { - // user is allowed, set UserId to key "user" in this context, the userId can be read later using - // c.Get("user" - return pairs[r].User - } else { - return "" - } -} - -// Implements a basic Basic HTTP Authorization. It takes as argument a map[string]string where -// the key is the user name and the value is the password. -func BasicAuth(accounts Accounts) HandlerFunc { - - pairs, err := processCredentials(accounts) - if err != nil { - panic(err) - } - return func(c *Context) { - // Search user in the slice of allowed credentials - user := searchCredential(pairs, c.Req.Header.Get("Authorization")) - if len(user) == 0 { - // Credentials doesn't match, we return 401 Unauthorized and abort request. - c.Writer.Header().Set("WWW-Authenticate", "Basic realm=\"Authorization Required\"") - c.Fail(401, errors.New("Unauthorized")) - } else { - // user is allowed, set UserId to key "user" in this context, the userId can be read later using - // c.Get("user") - c.Set("user", user) - } - } -} diff --git a/css/gin.webflow.css b/css/gin.webflow.css new file mode 100755 index 00000000..4738ab8b --- /dev/null +++ b/css/gin.webflow.css @@ -0,0 +1,607 @@ +body { + background-color: #dbdbdb; + font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; + color: #333; + font-size: 12px; + line-height: 20px; +} +h1 { + margin: 10px 0px; + font-size: 38px; + line-height: 44px; + font-weight: 700; +} +h2 { + margin: 10px 0px; + font-size: 32px; + line-height: 36px; + font-weight: 700; +} +h3 { + margin: 10px 0px 1px; + font-family: Montserrat, sans-serif; + font-size: 21px; + line-height: 30px; + font-weight: 400; +} +h4 { + margin: 10px 0px; + font-size: 18px; + line-height: 24px; + font-weight: 700; +} +h5 { + margin: 10px 0px; + font-size: 14px; + line-height: 20px; + font-weight: 700; +} +h6 { + margin: 10px 0px; + font-size: 12px; + line-height: 18px; + font-weight: 700; +} +p { + margin-bottom: 26px; + font-family:'Varela Round', sans-serif; + color: #848999; + font-size: 14px; +} +.button { + display: inline-block; + width: 180px; + margin-right: 8px; + margin-left: 8px; + padding: 14px 29px; + border-radius: 5px; + background-color: #6d7280; + -webkit-transition: background-color 300ms ease; + -o-transition: background-color 300ms ease; + transition: background-color 300ms ease; + font-family: Montserrat, sans-serif; + color: white; + font-size: 14px; + text-align: center; + text-decoration: none; + text-transform: uppercase; +} +.button:hover { + background-color: #848a9c; +} +.button.nav { + margin-left: 18px; + -webkit-transition: all 200ms ease; + -o-transition: all 200ms ease; + transition: all 200ms ease; +} +.button.nav:hover { + background-color: #9299ad; +} +.button.big-green { + margin-top: 191px; + padding: 25px 22px; + background-color: #32ac97; + -webkit-transition: all 200ms ease; + -o-transition: all 200ms ease; + transition: all 200ms ease; + font-size: 29px; + text-transform: capitalize; +} +.button.big-green:hover { + background-color: #258575; +} +.button.sign-up { + width: 180px; + background-color: #2c9986; +} +.button.sign-up:hover { + background-color: #33b59f; +} +.button.sentrybutton { + display: inline-block; + width: 315px; + margin-right: 0px; + margin-bottom: 26px; + margin-left: 0px; + background-image: url('../images/sentry2.png'); + background-position: 50% 50%; + background-size: cover; + font-size: 22px; + line-height: 28px; +} +.button.sentrybutton:hover { + width: 315px; + background-image: -webkit-radial-gradient(circle at 38% 56%, rgba(255, 255, 255, 0), rgba(242, 134, 27, 0.81)), url('../images/sentry2.png'); + background-image: -o-radial-gradient(circle at 38% 56%, rgba(255, 255, 255, 0), rgba(242, 134, 27, 0.81)), url('../images/sentry2.png'); + background-image: radial-gradient(circle at 38% 56%, rgba(255, 255, 255, 0), rgba(242, 134, 27, 0.81)), url('../images/sentry2.png'); + background-position: 0% 0%, 50% 50%; + background-size: auto, cover; + text-decoration: underline; +} +.section { + margin-top: 4px; + padding-top: 65px; + padding-bottom: 65px; + background-color: white; +} +.section.header { + padding-top: 22px; + padding-bottom: 22px; + background-color: #262933; +} +.section.hero { + width: auto; + height: 427px; + margin-top: 4px; + padding-top: 139px; + padding-right: 32%; + padding-bottom: 0px; + background-image: url('../images/gin.jpg'); + background-position: 50% 50%; + background-size: cover; + background-repeat: no-repeat; + text-align: center; +} +.section.grey { + background-color: #eff1f4; + text-align: center; +} +.section.centered { + text-align: center; +} +.section.footer { + background-color: #363b48; + text-align: left; +} +.company { + margin-top: 11px; + float: left; + font-family: Montserrat, sans-serif; + color: white; + font-size: 28px; + font-weight: 400; +} +.nav-link { + margin-right: 11px; + margin-left: 11px; + -webkit-transition: color 300ms ease, background-color 300ms ease; + -o-transition: color 300ms ease, background-color 300ms ease; + transition: color 300ms ease, background-color 300ms ease; + font-family: Montserrat, sans-serif; + color: rgba(255, 255, 255, 0.81); + font-size: 14px; + text-decoration: none; + text-transform: uppercase; +} +.nav-link:hover { + color: white; +} +.nav-link.sign-up { + padding: 10px 20px; + border-radius: 5px; + background-color: #2c9986; +} +.nav-link.sign-up:hover { + background-color: #3ac2ab; +} +.nav-column { + padding-top: 10px; + text-align: right; +} +.logo { + margin-right: 11px; + float: left; +} +.hero-heading { + margin-bottom: 25px; + float: none; + border-radius: 0px; + font-family:'Great Vibes', cursive; + color: white; + font-size: 70px; + font-style: normal; + font-weight: 400; + text-decoration: none; + text-transform: none; + list-style-type: none; + text-shadow: none; +} +.hero-subhead { + color: #a3a8b6; + font-size: 14px; +} +.section-title { + font-family: Montserrat, sans-serif; + font-size: 31px; + font-weight: 400; + text-align: center; +} +.section-subtitle { + margin-bottom: 39px; + color: #848999; + text-align: center; +} +.responsive-img { + display: block; + margin-right: auto; + margin-left: auto; +} +.grey-icon { + margin-right: 9px; +} +.content-column { + padding-top: 79px; + text-align: left; +} +.circle { + height: 317px; + margin-bottom: 26px; + padding-top: 21px; + border-radius: 190px; + background-color: #f7f8fa; +} +.number { + display: block; + width: auto; + height: 40px; + margin-right: auto; + margin-bottom: 17px; + margin-left: auto; + padding-top: 10px; + border-radius: 50px; + background-color: #363b48; + font-family: Montserrat, sans-serif; + color: white; + font-size: 20px; +} +.icons { + display: inline-block; + width: 50px; + height: 50px; + margin-top: 30px; + padding-top: 14px; + border-radius: 40px; + background-color: #eff1f4; + font-size: 20px; + font-weight: 700; +} +.quote-box { + padding: 34px 40px 34px 98px; + border-radius: 8px; + background-color: white; + background-image: url('../images/12-quotes.png'); + background-position: 8% 22%; + background-size: 50px; + background-repeat: no-repeat; + text-align: left; +} +.quote { + color: #2d303b; + font-size: 15px; + line-height: 24px; +} +.quote-thingy { + display: block; + margin-top: -2px; + margin-right: auto; + margin-left: 45px; +} +.by-section { + text-align: left; +} +.person-icon { + margin-right: 15px; + float: left; +} +.location { + font-family: Varela; + color: #848999; + font-size: 15px; +} +.logo-bottom { + margin-right: 14px; + float: left; +} +.footer-text { + display: inline-block; + margin-top: 11px; + font-family: Montserrat, sans-serif; + color: #7d8391; + font-size: 15px; + text-decoration: none; +} +.social-icon { + width: 40px; + height: 40px; + margin-right: 7px; + margin-left: 7px; + padding-top: 5px; + padding-right: 0px; + border-radius: 40px; + background-color: #596073; + -webkit-transition: all 200ms ease; + -o-transition: all 200ms ease; + transition: all 200ms ease; + text-align: center; +} +.social-icon:hover { + background-color: #7f89a3; +} +.right-footer-col { + text-align: right; +} +.nav-bar { + padding-top: 0px; + padding-bottom: 4px; + background-color: #d6d6d6; +} +.image-crop { + overflow-x: hidden; + overflow-y: hidden; + height: 302px; + box-shadow: red 0px -11px 0px 0px inset; + -webkit-transition: height 300ms ease; + -o-transition: height 300ms ease; + transition: height 300ms ease; +} +.image-crop:hover { + height: 372px; +} +.button-group { + position: static; + margin-top: 26px; + float: none; +} +.center { + text-align: center; +} +.presenting { + padding-right: 0px; +} +.graph-image { + display: inline-block; +} +.graph-block { + display: block; + overflow-x: visible; + overflow-y: visible; + margin-right: auto; + margin-left: auto; + float: none; + text-align: center; +} +.goget { + margin-top: 26px; +} +.goget-text { + padding: 4px 14px; + border-radius: 5px; + background-color: rgba(105, 105, 105, 0.65); + font-family:'Open Sans', sans-serif; + color: white; +} +.footgraph { + margin-top: 22px; +} +.sentry-block { + display: block; + width: 319px; + margin: 17px auto 10px; + padding: 20px 25px; + float: none; + border-radius: 8px; + background-image: url('../images/sentry2.png'); + background-position: 50% 50%; + background-size: cover; + font-family: Vollkorn, serif; + color: white; + font-size: 28px; + line-height: 33px; + font-weight: 400; + text-align: center; +} +.samples { + top: -6px; +} +.sliderexamples { + width: auto; + height: 558px; + background-color: #272822; +} +html.w-mod-js.w-mod-no-ios *[data-ix="slicefromleft"] { + opacity: 0; + -webkit-transform: translate(-100px, 0px); + -ms-transform: translate(-100px, 0px); + -o-transform: translate(-100px, 0px); + transform: translate(-100px, 0px); +} +html.w-mod-js *[data-ix="fadein"] { + opacity: 0; + -webkit-transform: scale(0.5) rotate(-25deg); + -ms-transform: scale(0.5) rotate(-25deg); + -o-transform: scale(0.5) rotate(-25deg); + transform: scale(0.5) rotate(-25deg); +} +html.w-mod-js.w-mod-no-ios *[data-ix="slicefromright"] { + opacity: 0; + -webkit-transform: translate(100px, 0px); + -ms-transform: translate(100px, 0px); + -o-transform: translate(100px, 0px); + transform: translate(100px, 0px); +} +@media (max-width: 991px) { + .button.nav { + margin-left: 11px; + padding-right: 10px; + padding-left: 10px; + } + .button.big-green { + margin-top: 148px; + } + .section.hero { + padding-right: 36%; + } + .nav-link { + margin-right: 7px; + margin-left: 7px; + font-size: 13px; + } + .hero-heading { + text-shadow: none; + } + .grey-icon { + margin-top: 19px; + } + .content-column { + padding-top: 0px; + } + .circle { + height: 293px; + } + .frames { + width: 75%; + } +} +@media (max-width: 767px) { + .button { + margin-bottom: 10px; + } + .button.nav { + display: block; + width: 60%; + margin: 23px auto 17px; + } + .button.big-green { + margin-top: 86px; + margin-bottom: 62px; + } + .section { + padding: 32px 15px; + } + .section.hero { + padding-top: 91px; + } + .section.footer { + text-align: center; + } + .company { + display: inline-block; + float: none; + } + .nav-column { + padding-top: 19px; + text-align: center; + } + .logo { + margin-top: -14px; + float: none; + } + .company-column { + margin-top: 35px; + margin-bottom: 23px; + text-align: center; + } + .hero-heading { + margin-bottom: 26px; + font-size: 65px; + line-height: 34px; + text-shadow: none; + } + .grey-icon { + margin-top: 28px; + } + .content-column { + padding-left: 0px; + } + .circle { + display: inline-block; + height: auto; + border-radius: 10px; + } + .frames { + width: 55%; + margin-bottom: 19px; + } + .number { + margin-bottom: 20px; + } + .quote-box { + background-image: url('../images/12-quotes.png'); + } + .by-section.first { + margin-bottom: 35px; + } + .logo-bottom { + margin-right: -1px; + margin-bottom: 37px; + float: none; + } + .footer-text { + margin-bottom: 22px; + } + .social-icon.first { + margin-left: 1px; + } + .right-footer-col { + text-align: center; + } + .brand-column { + text-align: center; + } +} +@media (max-width: 479px) { + .button { + display: block; + } + .button.nav { + width: 80%; + } + .button.big-green { + margin-top: 0px; + margin-right: 16px; + margin-left: 16px; + } + .button.sentrybutton { + display: inline-block; + width: 100%; + font-size: 19px; + } + .button.sentrybutton:hover { + width: 100%; + } + .section { + padding-right: 11px; + } + .section.hero { + padding-top: 85px; + padding-right: 15px; + padding-left: 15px; + } + .nav-link { + display: block; + padding-top: 8px; + padding-bottom: 8px; + } + .hero-heading { + margin-top: 0px; + text-shadow: none; + } + .hero-subhead { + margin-bottom: 34px; + } + .grey-icon { + margin-top: 34px; + } + .content-column { + text-align: center; + } + .frames { + width: 75%; + } + .quote-box { + padding-left: 75px; + background-image: url('../images/12-quotes.png'); + background-position: 8% 17%; + } +} \ No newline at end of file diff --git a/css/normalize.css b/css/normalize.css new file mode 100755 index 00000000..6f39ea80 --- /dev/null +++ b/css/normalize.css @@ -0,0 +1,356 @@ +/*! normalize.css v2.1.3 | MIT License | git.io/normalize */ +/* ========================================================================== + HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined in IE 8/9. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section, +summary { + display: block; +} +/** + * Correct `inline-block` display not defined in IE 8/9. + */ +audio, +canvas, +video { + display: inline-block; +} +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; +} +/** + * Address `[hidden]` styling not present in IE 8/9. + * Hide the `template` element in IE, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; +} +/* ========================================================================== + Base + ========================================================================== */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + + -ms-text-size-adjust: 100%; + /* 2 */ + + -webkit-text-size-adjust: 100%; + /* 2 */ + +} +/** + * Remove default margin. + */ +body { + margin: 0; +} +/* ========================================================================== + Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background: transparent; +} +/** + * Address `outline` inconsistency between Chrome and other browsers. + */ +a:focus { + outline: thin dotted; +} +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: 0; +} +/* ========================================================================== + Typography + ========================================================================== */ +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari 5, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} +/** + * Address styling not present in IE 8/9, Safari 5, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; +} +/** + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ +b, +strong { + font-weight: bold; +} +/** + * Address styling not present in Safari 5 and Chrome. + */ +dfn { + font-style: italic; +} +/** + * Address differences between Firefox and other browsers. + */ +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; +} +/** + * Correct font family set oddly in Safari 5 and Chrome. + */ +code, +kbd, +pre, +samp { + font-family: monospace, serif; + font-size: 1em; +} +/** + * Improve readability of pre-formatted text in all browsers. + */ +pre { + white-space: pre-wrap; +} +/** + * Set consistent quote types. + */ +q { + quotes: "\201C" "\201D" "\2018" "\2019"; +} +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; +} +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +/* ========================================================================== + Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9. + */ +img { + border: 0; +} +/** + * Correct overflow displayed oddly in IE 9. + */ +svg:not(:root) { + overflow: hidden; +} +/* ========================================================================== + Figures + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari 5. + */ +figure { + margin: 0; +} +/* ========================================================================== + Forms + ========================================================================== */ +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +/** + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + + padding: 0; + /* 2 */ + +} +/** + * 1. Correct font family not being inherited in all browsers. + * 2. Correct font size not being inherited in all browsers. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + */ +button, +input, +select, +textarea { + font-family: inherit; + /* 1 */ + + font-size: 100%; + /* 2 */ + + margin: 0; + /* 3 */ + +} +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +button, +input { + line-height: normal; +} +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ +button, +select { + text-transform: none; +} +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + + cursor: pointer; + /* 3 */ + +} +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; +} +/** + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + + padding: 0; + /* 2 */ + +} +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + /* 2 */ + + box-sizing: content-box; +} +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +/** + * 1. Remove default vertical scrollbar in IE 8/9. + * 2. Improve readability and alignment in all browsers. + */ +textarea { + overflow: auto; + /* 1 */ + + vertical-align: top; + /* 2 */ + +} +/* ========================================================================== + Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; +} diff --git a/css/webflow.css b/css/webflow.css new file mode 100755 index 00000000..0d9ee31c --- /dev/null +++ b/css/webflow.css @@ -0,0 +1,1225 @@ +@font-face { + font-family: 'webflow-icons'; + src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg6yAywAAAC8AAAAYGNtYXDmFACHAAABHAAAAERnYXNwAAAAEAAAAWAAAAAIZ2x5Zg0Qb6IAAAFoAAABMGhlYWQARYalAAACmAAAADZoaGVhBwIEhgAAAtAAAAAkaG10eA4AAsAAAAL0AAAAFGxvY2EAPAC2AAADCAAAAAxtYXhwAAkATQAAAxQAAAAgbmFtZXLtdWgAAAM0AAABb3Bvc3QAAwAAAAAEpAAAACAAAwQAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAACDmAgPA/8D/wAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADAAAAAIAAgAAgAAACDmAv/9//8AAAAg5gD//f///+EaAgADAAEAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQEgAAADIAOAAAUAAAkBBwkBFwMg/kBAAYD+gEABwAHAQP6A/oBAAAEA4AAAAuADgAAFAAATARcJAQfgAcBA/oABgEABwAHAQP6A/oBAAAADAMAA4ANAAsAAGAAxAEoAAAEhIg4CHQEUHgIzITI+Aj0BNC4CIxUhIg4CHQEUHgIzITI+Aj0BNC4CIxUhIg4CHQEUHgIzITI+Aj0BNC4CIwMg/cAHCwkFBQkLBwJABwsJBQUJCwf9wAcLCQUFCQsHAkAHCwkFBQkLB/3ABwsJBQUJCwcCQAcLCQUFCQsHAsAFCQsHIAcLCQUFCQsHIAcLCQXABQkLByAHCwkFBQkLByAHCwkFwAUJCwcgBwsJBQUJCwcgBwsJBQAAAAABAAAAAQAAKY8rQF8PPPUACwQAAAAAAM7zoRQAAAAAzvOhFAAAAAADQAOAAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAwANAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAAIAAAAEAAEgBAAA4AQAAMAAAAAAAAoAHgAyAJgAAQAAAAUASwADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABABoAAAABAAAAAAACAA4AcQABAAAAAAADABoAMAABAAAAAAAEABoAfwABAAAAAAAFABYAGgABAAAAAAAGAA0ASgABAAAAAAAKACgAmQADAAEECQABABoAAAADAAEECQACAA4AcQADAAEECQADABoAMAADAAEECQAEABoAfwADAAEECQAFABYAGgADAAEECQAGABoAVwADAAEECQAKACgAmQB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzAFYAZQByAHMAaQBvAG4AIAAxAC4AMAB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzAFIAZQBnAHUAbABhAHIAdwBlAGIAZgBsAG8AdwAtAGkAYwBvAG4AcwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4AAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=) format('truetype'), url(data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAAUcAAoAAAAABNQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAXEAAAFxTvL96k9TLzIAAAJoAAAAYAAAAGAOsgMsY21hcAAAAsgAAABEAAAAROYUAIdnYXNwAAADDAAAAAgAAAAIAAAAEGhlYWQAAAMUAAAANgAAADYARYalaGhlYQAAA0wAAAAkAAAAJAcCBIZobXR4AAADcAAAABQAAAAUDgACwG1heHAAAAOEAAAABgAAAAYABVAAbmFtZQAAA4wAAAFvAAABb3LtdWhwb3N0AAAE/AAAACAAAAAgAAMAAAEABAQAAQEBDndlYmZsb3ctaWNvbnMAAQIAAQA++BwC+BsD+BgEHgoACXZWJf+Lix4KAAl2ViX/i4sMB4uL+dT51AUdAAAAkg8dAAAAlxEdAAAACR0AAAFoEgAGAQEOGx4jKC13ZWJmbG93LWljb25zd2ViZmxvdy1pY29uc3UyMHVFNjAwdUU2MDF1RTYwMgAAAgGJAAMABQEBBAciPcn+lA78lA75tPhUFfxU+FQFS0sF+BT8FAX8FPwUBctLBQ73dPhUFfhU+FQFy0sF/BT8FAX4FPwUBUtLBQ75tPlUFfzUiwV5i319i3kIi2sFi3mZfZ2LCPjUiwWdi5mZi50Ii6sFi519mXmLCIv7VBX81IsFeYt9fYt5CItrBYt5mX2diwj41IsFnYuZmYudCIurBYudfZl5iwiL+1QV/NSLBXmLfX2LeQiLawWLeZl9nYsI+NSLBZ2LmZmLnQiLqwWLnX2ZeYsIDvqUFPqUFYsMCgAAAAADBAABkAAFAAACmQLMAAAAjwKZAswAAAHrADMBCQAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAEAAIOYCA8D/wP/AA8AAQAAAAAEAAAAAAAAAAAAAACAAAAAAAAIAAAADAAAAFAADAAEAAAAUAAQAMAAAAAgACAACAAAAIOYC//3//wAAACDmAP/9////4RoCAAMAAQAAAAAAAAAAAAEAAf//AA8AAQAAAAEAAOeMsbdfDzz1AAsEAAAAAADO86EUAAAAAM7zoRQAAAAAA0ADgAAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAMADQAABAAAAAAAAAAAAAAAAAAAABQAAAAACAAAABAABIAQAAOAEAADAAABQAAAFAAAAAAAOAK4AAQAAAAAAAQAaAAAAAQAAAAAAAgAOAHEAAQAAAAAAAwAaADAAAQAAAAAABAAaAH8AAQAAAAAABQAWABoAAQAAAAAABgANAEoAAQAAAAAACgAoAJkAAwABBAkAAQAaAAAAAwABBAkAAgAOAHEAAwABBAkAAwAaADAAAwABBAkABAAaAH8AAwABBAkABQAWABoAAwABBAkABgAaAFcAAwABBAkACgAoAJkAdwBlAGIAZgBsAG8AdwAtAGkAYwBvAG4AcwBWAGUAcgBzAGkAbwBuACAAMQAuADAAdwBlAGIAZgBsAG8AdwAtAGkAYwBvAG4Ac3dlYmZsb3ctaWNvbnMAdwBlAGIAZgBsAG8AdwAtAGkAYwBvAG4AcwBSAGUAZwB1AGwAYQByAHcAZQBiAGYAbABvAHcALQBpAGMAbwBuAHMARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('woff'); + font-weight: normal; + font-style: normal; +} +[class^="w-icon-"], +[class*=" w-icon-"] { + font-family: 'webflow-icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.w-icon-slider-right:before { + content: "\e600"; +} +.w-icon-slider-left:before { + content: "\e601"; +} +.w-icon-nav-menu:before { + content: "\e602"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + height: 100%; +} +body { + margin: 0; + min-height: 100%; + background-color: #fff; + color: #333; +} +img { + max-width: 100%; + vertical-align: middle; + display: inline-block; +} +html.w-mod-touch * { + background-attachment: scroll !important; +} +a:focus { + outline: 0; +} +.w-block { + display: block; +} +.w-inline-block { + max-width: 100%; + display: inline-block; +} +.w-clearfix:before, +.w-clearfix:after { + content: " "; + display: table; +} +.w-clearfix:after { + clear: both; +} +.w-hidden { + display: none; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; +} +p { + margin: 0; +} +blockquote { + margin: 0; +} +ul, +ol { + margin-top: 0; + margin-bottom: 0; +} +.w-list-unstyled { + padding-left: 0; + list-style: none; +} +.w-embed:before, +.w-embed:after { + content: " "; + display: table; +} +.w-embed:after { + clear: both; +} +.w-video { + width: 100%; + position: relative; + padding: 0; +} +.w-video iframe, +.w-video object, +.w-video embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} +.w-form { + margin: 0 0 15px; +} +.w-form-done { + display: none; + padding: 10px; + background-color: #dddddd; +} +.w-form-fail { + display: none; + margin-top: 10px; + padding: 10px; + background-color: #ffdede; +} +label { + display: block; + margin-bottom: 5px; + font-weight: bold; +} +.w-input, +.w-select { + display: block; + width: 100%; + height: 38px; + padding: 8px 12px; + margin-bottom: 10px; + font-size: 14px; + line-height: 1.428571429; + color: #555555; + vertical-align: middle; + background-color: #ffffff; + border: 1px solid #cccccc; +} +.w-input:-moz-placeholder, +.w-select:-moz-placeholder { + color: #999999; +} +.w-input::-moz-placeholder, +.w-select::-moz-placeholder { + color: #999999; + opacity: 1; +} +.w-input:-ms-input-placeholder, +.w-select:-ms-input-placeholder { + color: #999999; +} +.w-input::-webkit-input-placeholder, +.w-select::-webkit-input-placeholder { + color: #999999; +} +.w-input:focus, +.w-select:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; +} +.w-input[disabled], +.w-select[disabled], +.w-input[readonly], +.w-select[readonly], +fieldset[disabled] .w-input, +fieldset[disabled] .w-select { + cursor: not-allowed; + background-color: #eeeeee; +} +textarea.w-input, +textarea.w-select { + height: auto; +} +.w-select[multiple] { + height: auto; +} +.w-button { + display: inline-block; + padding: 12px; + background-color: black; + color: white; + border: 0; + line-height: inherit; +} +.w-form-label { + display: inline-block; + cursor: pointer; + font-weight: normal; + margin-bottom: 0px; +} +.w-checkbox, +.w-radio { + display: block; + margin-bottom: 5px; + padding-left: 20px; +} +.w-checkbox:before, +.w-radio:before, +.w-checkbox:after, +.w-radio:after { + content: " "; + display: table; +} +.w-checkbox:after, +.w-radio:after { + clear: both; +} +.w-checkbox-input, +.w-radio-input { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; + float: left; + margin-left: -20px; +} +.w-radio-input { + margin-top: 3px; +} +.w-container { + margin-left: auto; + margin-right: auto; + max-width: 940px; +} +.w-container:before, +.w-container:after { + content: " "; + display: table; +} +.w-container:after { + clear: both; +} +.w-container .w-row { + margin-left: -10px; + margin-right: -10px; +} +.w-row:before, +.w-row:after { + content: " "; + display: table; +} +.w-row:after { + clear: both; +} +.w-row .w-row { + margin-left: 0; + margin-right: 0; +} +.w-col { + position: relative; + float: left; + width: 100%; + min-height: 1px; + padding-left: 10px; + padding-right: 10px; +} +.w-col .w-col { + padding-left: 0; + padding-right: 0; +} +.w-col-1 { + width: 8.333333333333332%; +} +.w-col-2 { + width: 16.666666666666664%; +} +.w-col-3 { + width: 25%; +} +.w-col-4 { + width: 33.33333333333333%; +} +.w-col-5 { + width: 41.66666666666667%; +} +.w-col-6 { + width: 50%; +} +.w-col-7 { + width: 58.333333333333336%; +} +.w-col-8 { + width: 66.66666666666666%; +} +.w-col-9 { + width: 75%; +} +.w-col-10 { + width: 83.33333333333334%; +} +.w-col-11 { + width: 91.66666666666666%; +} +.w-col-12 { + width: 100%; +} +.w-col-push-1 { + left: 8.333333333333332%; +} +.w-col-push-2 { + left: 16.666666666666664%; +} +.w-col-push-3 { + left: 25%; +} +.w-col-push-4 { + left: 33.33333333333333%; +} +.w-col-push-5 { + left: 41.66666666666667%; +} +.w-col-push-6 { + left: 50%; +} +.w-col-push-7 { + left: 58.333333333333336%; +} +.w-col-push-8 { + left: 66.66666666666666%; +} +.w-col-push-9 { + left: 75%; +} +.w-col-push-10 { + left: 83.33333333333334%; +} +.w-col-push-11 { + left: 91.66666666666666%; +} +.w-col-pull-1 { + right: 8.333333333333332%; +} +.w-col-pull-2 { + right: 16.666666666666664%; +} +.w-col-pull-3 { + right: 25%; +} +.w-col-pull-4 { + right: 33.33333333333333%; +} +.w-col-pull-5 { + right: 41.66666666666667%; +} +.w-col-pull-6 { + right: 50%; +} +.w-col-pull-7 { + right: 58.333333333333336%; +} +.w-col-pull-8 { + right: 66.66666666666666%; +} +.w-col-pull-9 { + right: 75%; +} +.w-col-pull-10 { + right: 83.33333333333334%; +} +.w-col-pull-11 { + right: 91.66666666666666%; +} +.w-col-offset-1 { + margin-left: 8.333333333333332%; +} +.w-col-offset-2 { + margin-left: 16.666666666666664%; +} +.w-col-offset-3 { + margin-left: 25%; +} +.w-col-offset-4 { + margin-left: 33.33333333333333%; +} +.w-col-offset-5 { + margin-left: 41.66666666666667%; +} +.w-col-offset-6 { + margin-left: 50%; +} +.w-col-offset-7 { + margin-left: 58.333333333333336%; +} +.w-col-offset-8 { + margin-left: 66.66666666666666%; +} +.w-col-offset-9 { + margin-left: 75%; +} +.w-col-offset-10 { + margin-left: 83.33333333333334%; +} +.w-col-offset-11 { + margin-left: 91.66666666666666%; +} +.w-hidden-main { + display: none !important; +} +@media screen and (max-width: 991px) { + .w-container { + max-width: 728px; + } + .w-hidden-main { + display: inherit !important; + } + .w-hidden-medium { + display: none !important; + } + .w-col-medium-1 { + width: 8.333333333333332%; + } + .w-col-medium-2 { + width: 16.666666666666664%; + } + .w-col-medium-3 { + width: 25%; + } + .w-col-medium-4 { + width: 33.33333333333333%; + } + .w-col-medium-5 { + width: 41.66666666666667%; + } + .w-col-medium-6 { + width: 50%; + } + .w-col-medium-7 { + width: 58.333333333333336%; + } + .w-col-medium-8 { + width: 66.66666666666666%; + } + .w-col-medium-9 { + width: 75%; + } + .w-col-medium-10 { + width: 83.33333333333334%; + } + .w-col-medium-11 { + width: 91.66666666666666%; + } + .w-col-medium-12 { + width: 100%; + } + .w-col-medium-push-1 { + left: 8.333333333333332%; + } + .w-col-medium-push-2 { + left: 16.666666666666664%; + } + .w-col-medium-push-3 { + left: 25%; + } + .w-col-medium-push-4 { + left: 33.33333333333333%; + } + .w-col-medium-push-5 { + left: 41.66666666666667%; + } + .w-col-medium-push-6 { + left: 50%; + } + .w-col-medium-push-7 { + left: 58.333333333333336%; + } + .w-col-medium-push-8 { + left: 66.66666666666666%; + } + .w-col-medium-push-9 { + left: 75%; + } + .w-col-medium-push-10 { + left: 83.33333333333334%; + } + .w-col-medium-push-11 { + left: 91.66666666666666%; + } + .w-col-medium-pull-1 { + right: 8.333333333333332%; + } + .w-col-medium-pull-2 { + right: 16.666666666666664%; + } + .w-col-medium-pull-3 { + right: 25%; + } + .w-col-medium-pull-4 { + right: 33.33333333333333%; + } + .w-col-medium-pull-5 { + right: 41.66666666666667%; + } + .w-col-medium-pull-6 { + right: 50%; + } + .w-col-medium-pull-7 { + right: 58.333333333333336%; + } + .w-col-medium-pull-8 { + right: 66.66666666666666%; + } + .w-col-medium-pull-9 { + right: 75%; + } + .w-col-medium-pull-10 { + right: 83.33333333333334%; + } + .w-col-medium-pull-11 { + right: 91.66666666666666%; + } + .w-col-medium-offset-1 { + margin-left: 8.333333333333332%; + } + .w-col-medium-offset-2 { + margin-left: 16.666666666666664%; + } + .w-col-medium-offset-3 { + margin-left: 25%; + } + .w-col-medium-offset-4 { + margin-left: 33.33333333333333%; + } + .w-col-medium-offset-5 { + margin-left: 41.66666666666667%; + } + .w-col-medium-offset-6 { + margin-left: 50%; + } + .w-col-medium-offset-7 { + margin-left: 58.333333333333336%; + } + .w-col-medium-offset-8 { + margin-left: 66.66666666666666%; + } + .w-col-medium-offset-9 { + margin-left: 75%; + } + .w-col-medium-offset-10 { + margin-left: 83.33333333333334%; + } + .w-col-medium-offset-11 { + margin-left: 91.66666666666666%; + } + .w-col-stack { + width: 100%; + left: auto; + right: auto; + } +} +@media screen and (max-width: 767px) { + .w-hidden-main { + display: inherit !important; + } + .w-hidden-medium { + display: inherit !important; + } + .w-hidden-small { + display: none !important; + } + .w-row, + .w-container .w-row { + margin-left: 0; + margin-right: 0; + } + .w-col { + width: 100%; + left: auto; + right: auto; + } + .w-col-small-1 { + width: 8.333333333333332%; + } + .w-col-small-2 { + width: 16.666666666666664%; + } + .w-col-small-3 { + width: 25%; + } + .w-col-small-4 { + width: 33.33333333333333%; + } + .w-col-small-5 { + width: 41.66666666666667%; + } + .w-col-small-6 { + width: 50%; + } + .w-col-small-7 { + width: 58.333333333333336%; + } + .w-col-small-8 { + width: 66.66666666666666%; + } + .w-col-small-9 { + width: 75%; + } + .w-col-small-10 { + width: 83.33333333333334%; + } + .w-col-small-11 { + width: 91.66666666666666%; + } + .w-col-small-12 { + width: 100%; + } + .w-col-small-push-1 { + left: 8.333333333333332%; + } + .w-col-small-push-2 { + left: 16.666666666666664%; + } + .w-col-small-push-3 { + left: 25%; + } + .w-col-small-push-4 { + left: 33.33333333333333%; + } + .w-col-small-push-5 { + left: 41.66666666666667%; + } + .w-col-small-push-6 { + left: 50%; + } + .w-col-small-push-7 { + left: 58.333333333333336%; + } + .w-col-small-push-8 { + left: 66.66666666666666%; + } + .w-col-small-push-9 { + left: 75%; + } + .w-col-small-push-10 { + left: 83.33333333333334%; + } + .w-col-small-push-11 { + left: 91.66666666666666%; + } + .w-col-small-pull-1 { + right: 8.333333333333332%; + } + .w-col-small-pull-2 { + right: 16.666666666666664%; + } + .w-col-small-pull-3 { + right: 25%; + } + .w-col-small-pull-4 { + right: 33.33333333333333%; + } + .w-col-small-pull-5 { + right: 41.66666666666667%; + } + .w-col-small-pull-6 { + right: 50%; + } + .w-col-small-pull-7 { + right: 58.333333333333336%; + } + .w-col-small-pull-8 { + right: 66.66666666666666%; + } + .w-col-small-pull-9 { + right: 75%; + } + .w-col-small-pull-10 { + right: 83.33333333333334%; + } + .w-col-small-pull-11 { + right: 91.66666666666666%; + } + .w-col-small-offset-1 { + margin-left: 8.333333333333332%; + } + .w-col-small-offset-2 { + margin-left: 16.666666666666664%; + } + .w-col-small-offset-3 { + margin-left: 25%; + } + .w-col-small-offset-4 { + margin-left: 33.33333333333333%; + } + .w-col-small-offset-5 { + margin-left: 41.66666666666667%; + } + .w-col-small-offset-6 { + margin-left: 50%; + } + .w-col-small-offset-7 { + margin-left: 58.333333333333336%; + } + .w-col-small-offset-8 { + margin-left: 66.66666666666666%; + } + .w-col-small-offset-9 { + margin-left: 75%; + } + .w-col-small-offset-10 { + margin-left: 83.33333333333334%; + } + .w-col-small-offset-11 { + margin-left: 91.66666666666666%; + } +} +@media screen and (max-width: 479px) { + .w-container { + max-width: none; + } + .w-hidden-main { + display: inherit !important; + } + .w-hidden-medium { + display: inherit !important; + } + .w-hidden-small { + display: inherit !important; + } + .w-hidden-tiny { + display: none !important; + } + .w-col { + width: 100%; + } + .w-col-tiny-1 { + width: 8.333333333333332%; + } + .w-col-tiny-2 { + width: 16.666666666666664%; + } + .w-col-tiny-3 { + width: 25%; + } + .w-col-tiny-4 { + width: 33.33333333333333%; + } + .w-col-tiny-5 { + width: 41.66666666666667%; + } + .w-col-tiny-6 { + width: 50%; + } + .w-col-tiny-7 { + width: 58.333333333333336%; + } + .w-col-tiny-8 { + width: 66.66666666666666%; + } + .w-col-tiny-9 { + width: 75%; + } + .w-col-tiny-10 { + width: 83.33333333333334%; + } + .w-col-tiny-11 { + width: 91.66666666666666%; + } + .w-col-tiny-12 { + width: 100%; + } + .w-col-tiny-push-1 { + left: 8.333333333333332%; + } + .w-col-tiny-push-2 { + left: 16.666666666666664%; + } + .w-col-tiny-push-3 { + left: 25%; + } + .w-col-tiny-push-4 { + left: 33.33333333333333%; + } + .w-col-tiny-push-5 { + left: 41.66666666666667%; + } + .w-col-tiny-push-6 { + left: 50%; + } + .w-col-tiny-push-7 { + left: 58.333333333333336%; + } + .w-col-tiny-push-8 { + left: 66.66666666666666%; + } + .w-col-tiny-push-9 { + left: 75%; + } + .w-col-tiny-push-10 { + left: 83.33333333333334%; + } + .w-col-tiny-push-11 { + left: 91.66666666666666%; + } + .w-col-tiny-pull-1 { + right: 8.333333333333332%; + } + .w-col-tiny-pull-2 { + right: 16.666666666666664%; + } + .w-col-tiny-pull-3 { + right: 25%; + } + .w-col-tiny-pull-4 { + right: 33.33333333333333%; + } + .w-col-tiny-pull-5 { + right: 41.66666666666667%; + } + .w-col-tiny-pull-6 { + right: 50%; + } + .w-col-tiny-pull-7 { + right: 58.333333333333336%; + } + .w-col-tiny-pull-8 { + right: 66.66666666666666%; + } + .w-col-tiny-pull-9 { + right: 75%; + } + .w-col-tiny-pull-10 { + right: 83.33333333333334%; + } + .w-col-tiny-pull-11 { + right: 91.66666666666666%; + } + .w-col-tiny-offset-1 { + margin-left: 8.333333333333332%; + } + .w-col-tiny-offset-2 { + margin-left: 16.666666666666664%; + } + .w-col-tiny-offset-3 { + margin-left: 25%; + } + .w-col-tiny-offset-4 { + margin-left: 33.33333333333333%; + } + .w-col-tiny-offset-5 { + margin-left: 41.66666666666667%; + } + .w-col-tiny-offset-6 { + margin-left: 50%; + } + .w-col-tiny-offset-7 { + margin-left: 58.333333333333336%; + } + .w-col-tiny-offset-8 { + margin-left: 66.66666666666666%; + } + .w-col-tiny-offset-9 { + margin-left: 75%; + } + .w-col-tiny-offset-10 { + margin-left: 83.33333333333334%; + } + .w-col-tiny-offset-11 { + margin-left: 91.66666666666666%; + } +} +.w-widget { + position: relative; +} +.w-widget-map { + width: 100%; + height: 400px; +} +.w-widget-map label { + width: auto; + display: inline; +} +.w-widget-map img { + max-width: inherit; +} +.w-widget-map .gm-style-iw { + width: 90% !important; + height: auto !important; + top: 7px !important; + left: 6% !important; + display: inline; + text-align: center; + overflow: hidden; +} +.w-widget-map .gm-style-iw + div { + display: none; +} +.w-widget-twitter { + overflow: hidden; +} +.w-widget-gplus { + overflow: hidden; +} +.w-slider { + position: relative; + height: 300px; + text-align: center; + background: rgba(153, 153, 153, 0.5); + clear: both; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + tap-highlight-color: rgba(0, 0, 0, 0); +} +.w-slider-mask { + position: relative; + display: block; + overflow: hidden; + z-index: 1; + left: 0; + right: 0; + height: 100%; + white-space: nowrap; +} +.w-slide { + position: relative; + display: inline-block; + vertical-align: top; + width: 100%; + height: 100%; + white-space: normal; + text-align: left; +} +.w-slider-nav { + position: absolute; + z-index: 2; + top: auto; + right: 0; + bottom: 0; + left: 0; + margin: auto; + padding-top: 10px; + height: 40px; + text-align: center; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + tap-highlight-color: rgba(0, 0, 0, 0); +} +.w-slider-nav.w-round > div { + -webkit-border-radius: 100%; + -webkit-background-clip: padding-box; + -moz-border-radius: 100%; + -moz-background-clip: padding; + border-radius: 100%; + background-clip: padding-box; +} +.w-slider-nav.w-num > div { + width: auto; + height: auto; + padding: 0.2em 0.5em; + font-size: inherit; + line-height: inherit; +} +.w-slider-nav.w-shadow > div { + -webkit-box-shadow: 0 0 3px rgba(51, 51, 51, 0.4); + -moz-box-shadow: 0 0 3px rgba(51, 51, 51, 0.4); + box-shadow: 0 0 3px rgba(51, 51, 51, 0.4); +} +.w-slider-nav-invert { + color: #fff; +} +.w-slider-nav-invert > div { + background-color: rgba(34, 34, 34, 0.4); +} +.w-slider-nav-invert > div.w-active { + background-color: #222; +} +.w-slider-dot { + position: relative; + display: inline-block; + width: 1em; + height: 1em; + background-color: rgba(255, 255, 255, 0.4); + cursor: pointer; + margin: 0 3px 0.5em; + -webkit-transition: background-color 100ms, color 100ms; + -moz-transition: background-color 100ms, color 100ms; + -o-transition: background-color 100ms, color 100ms; + transition: background-color 100ms, color 100ms; +} +.w-slider-dot.w-active { + background-color: #fff; +} +.w-slider-arrow-left, +.w-slider-arrow-right { + position: absolute; + width: 80px; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + cursor: pointer; + overflow: hidden; + color: white; + font-size: 40px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.w-slider-arrow-left [class^="w-icon-"], +.w-slider-arrow-right [class^="w-icon-"], +.w-slider-arrow-left [class*=" w-icon-"], +.w-slider-arrow-right [class*=" w-icon-"] { + position: absolute; +} +.w-slider-arrow-left { + z-index: 3; + right: auto; +} +.w-slider-arrow-right { + z-index: 4; + left: auto; +} +.w-icon-slider-left, +.w-icon-slider-right { + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: auto; + width: 1em; + height: 1em; +} +.w-nav { + position: relative; + background: #BBB; + z-index: 1000; +} +.w-nav:before, +.w-nav:after { + content: " "; + display: table; +} +.w-nav:after { + clear: both; +} +.w-nav-brand { + position: relative; + float: left; + text-decoration: none; + color: #222; +} +.w-nav-link { + position: relative; + display: inline-block; + vertical-align: top; + text-decoration: none; + color: #222; + padding: 20px; + text-align: left; + margin-left: auto; + margin-right: auto; +} +.w-nav-link.w--current { + color: #339CE1; +} +.w-nav-menu { + position: relative; + float: right; +} +.w--nav-menu-open { + display: block !important; + position: absolute; + top: 100%; + left: 0; + right: 0; + background: #999; + text-align: center; + overflow: visible; + min-width: 200px; +} +.w--nav-link-open { + display: block; +} +.w-nav-overlay { + position: absolute; + overflow: hidden; + display: none; + top: 100%; + left: 0; + right: 0; + width: 100%; +} +.w-nav-overlay .w--nav-menu-open { + top: 0; +} +.w-nav[data-animation="over-left"] .w-nav-overlay { + width: auto; +} +.w-nav[data-animation="over-left"] .w-nav-overlay, +.w-nav[data-animation="over-left"] .w--nav-menu-open { + right: auto; + z-index: 1; + top: 0; +} +.w-nav[data-animation="over-right"] .w-nav-overlay { + width: auto; +} +.w-nav[data-animation="over-right"] .w-nav-overlay, +.w-nav[data-animation="over-right"] .w--nav-menu-open { + left: auto; + z-index: 1; + top: 0; +} +.w-nav-button { + position: relative; + float: right; + padding: 18px; + font-size: 24px; + display: none; + cursor: pointer; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + tap-highlight-color: rgba(0, 0, 0, 0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.w-nav-button.w--open { + background-color: #999; + color: white; +} +.w-nav[data-collapse="all"] .w-nav-menu { + display: none; +} +.w-nav[data-collapse="all"] .w-nav-button { + display: block; +} +@media screen and (max-width: 991px) { + .w-nav[data-collapse="medium"] .w-nav-menu { + display: none; + } + .w-nav[data-collapse="medium"] .w-nav-button { + display: block; + } +} +@media screen and (max-width: 767px) { + .w-nav[data-collapse="small"] .w-nav-menu { + display: none; + } + .w-nav[data-collapse="small"] .w-nav-button { + display: block; + } + .w-nav-brand { + padding-left: 10px; + } +} +@media screen and (max-width: 479px) { + .w-nav[data-collapse="tiny"] .w-nav-menu { + display: none; + } + .w-nav[data-collapse="tiny"] .w-nav-button { + display: block; + } +} +.w-tabs { + position: relative; +} +.w-tabs:before, +.w-tabs:after { + content: " "; + display: table; +} +.w-tabs:after { + clear: both; +} +.w-tab-menu { + position: relative; +} +.w-tab-link { + position: relative; + display: inline-block; + vertical-align: top; + text-decoration: none; + padding: 8px 30px; + text-align: left; + cursor: pointer; + background-color: #E8E8E8; +} +.w-tab-link.w--current { + background-color: #BCD3F3; +} +.w-tab-content { + position: relative; + display: block; + overflow: hidden; +} +.w-tab-pane { + position: relative; + display: none; +} +.w--tab-active { + display: block; +} +@media screen and (max-width: 479px) { + .w-tab-link { + display: block; + } +} +.w-ix-emptyfix:after { + content: ""; +} diff --git a/examples/example_basic.go b/examples/example_basic.go deleted file mode 100644 index 575bd89f..00000000 --- a/examples/example_basic.go +++ /dev/null @@ -1,55 +0,0 @@ -package main - -import ( - "github.com/gin-gonic/gin" -) - -var DB = make(map[string]string) - -func main() { - r := gin.Default() - - // Ping test - r.GET("/ping", func(c *gin.Context) { - c.String(200, "pong") - }) - - // Get user value - r.GET("/user/:name", func(c *gin.Context) { - user := c.Params.ByName("name") - value, ok := DB[user] - if ok { - c.JSON(200, gin.H{"user": user, "value": value}) - } else { - c.JSON(200, gin.H{"user": user, "status": "no value"}) - } - }) - - // Authorized group (uses gin.BasicAuth() middleware) - // Same than: - // authorized := r.Group("/") - // authorized.Use(gin.BasicAuth(gin.Credentials{ - // "foo": "bar", - // "manu": "123", - //})) - authorized := r.Group("/", gin.BasicAuth(gin.Accounts{ - {"foo", "bar"}, //1. user:foo password:bar - {"manu", "123"}, //2. user:manu password:123 - })) - - authorized.POST("admin", func(c *gin.Context) { - user := c.Get("user").(string) - - // Parse JSON - var json struct { - Value string `json:"value" binding:"required"` - } - if c.EnsureBody(&json) { - DB[user] = json.Value - c.JSON(200, gin.H{"status": "ok"}) - } - }) - - // Listen and Server in 0.0.0.0:8080 - r.Run(":8081") -} diff --git a/gin.go b/gin.go deleted file mode 100644 index 1674f2ef..00000000 --- a/gin.go +++ /dev/null @@ -1,377 +0,0 @@ -package gin - -import ( - "encoding/json" - "encoding/xml" - "github.com/julienschmidt/httprouter" - "html/template" - "log" - "math" - "net/http" - "path" -) - -const ( - AbortIndex = math.MaxInt8 / 2 -) - -type ( - HandlerFunc func(*Context) - - H map[string]interface{} - - // Used internally to collect a error ocurred during a http request. - ErrorMsg struct { - Message string `json:"msg"` - Meta interface{} `json:"meta"` - } - - ResponseWriter interface { - http.ResponseWriter - Status() int - Written() bool - } - - responseWriter struct { - http.ResponseWriter - status int - } - - // Context is the most important part of gin. It allows us to pass variables between middleware, - // manage the flow, validate the JSON of a request and render a JSON response for example. - Context struct { - Req *http.Request - Writer ResponseWriter - Keys map[string]interface{} - Errors []ErrorMsg - Params httprouter.Params - handlers []HandlerFunc - engine *Engine - index int8 - } - - // Used internally to configure router, a RouterGroup is associated with a prefix - // and an array of handlers (middlewares) - RouterGroup struct { - Handlers []HandlerFunc - prefix string - parent *RouterGroup - engine *Engine - } - - // Represents the web framework, it wrappers the blazing fast httprouter multiplexer and a list of global middlewares. - Engine struct { - *RouterGroup - handlers404 []HandlerFunc - router *httprouter.Router - HTMLTemplates *template.Template - } -) - -func (rw *responseWriter) WriteHeader(s int) { - rw.ResponseWriter.WriteHeader(s) - rw.status = s -} - -func (rw *responseWriter) Write(b []byte) (int, error) { - return rw.ResponseWriter.Write(b) -} - -func (rw *responseWriter) Status() int { - return rw.status -} - -func (rw *responseWriter) Written() bool { - return rw.status != 0 -} - -// Returns a new blank Engine instance without any middleware attached. -// The most basic configuration -func New() *Engine { - engine := &Engine{} - engine.RouterGroup = &RouterGroup{nil, "/", nil, engine} - engine.router = httprouter.New() - engine.router.NotFound = engine.handle404 - return engine -} - -// Returns a Engine instance with the Logger and Recovery already attached. -func Default() *Engine { - engine := New() - engine.Use(Recovery(), Logger()) - return engine -} - -func (engine *Engine) LoadHTMLTemplates(pattern string) { - engine.HTMLTemplates = template.Must(template.ParseGlob(pattern)) -} - -// Adds handlers for NotFound. It return a 404 code by default. -func (engine *Engine) NotFound404(handlers ...HandlerFunc) { - engine.handlers404 = handlers -} - -func (engine *Engine) handle404(w http.ResponseWriter, req *http.Request) { - - handlers := engine.allHandlers(engine.handlers404) - c := engine.createContext(w, req, nil, handlers) - c.Next() - if !c.Writer.Written() { - http.NotFound(c.Writer, c.Req) - } -} - -// ServeFiles serves files from the given file system root. -// The path must end with "/*filepath", files are then served from the local -// path /defined/root/dir/*filepath. -// For example if root is "/etc" and *filepath is "passwd", the local file -// "/etc/passwd" would be served. -// Internally a http.FileServer is used, therefore http.NotFound is used instead -// of the Router's NotFound handler. -// To use the operating system's file system implementation, -// use http.Dir: -// router.ServeFiles("/src/*filepath", http.Dir("/var/www")) -func (engine *Engine) ServeFiles(path string, root http.FileSystem) { - engine.router.ServeFiles(path, root) -} - -// ServeHTTP makes the router implement the http.Handler interface. -func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request) { - engine.router.ServeHTTP(w, req) -} - -func (engine *Engine) Run(addr string) { - http.ListenAndServe(addr, engine) -} - -/************************************/ -/********** ROUTES GROUPING *********/ -/************************************/ - -func (group *RouterGroup) createContext(w http.ResponseWriter, req *http.Request, params httprouter.Params, handlers []HandlerFunc) *Context { - return &Context{ - Writer: &responseWriter{w, 0}, - Req: req, - index: -1, - engine: group.engine, - Params: params, - handlers: handlers, - } -} - -// Adds middlewares to the group, see example code in github. -func (group *RouterGroup) Use(middlewares ...HandlerFunc) { - group.Handlers = append(group.Handlers, middlewares...) -} - -// Greates a new router group. You should create add all the routes that share that have common middlwares or same path prefix. -// For example, all the routes that use a common middlware for authorization could be grouped. -func (group *RouterGroup) Group(component string, handlers ...HandlerFunc) *RouterGroup { - prefix := path.Join(group.prefix, component) - return &RouterGroup{ - Handlers: handlers, - parent: group, - prefix: prefix, - engine: group.engine, - } -} - -// Handle registers a new request handle and middlewares with the given path and method. -// The last handler should be the real handler, the other ones should be middlewares that can and should be shared among different routes. -// See the example code in github. -// -// For GET, POST, PUT, PATCH and DELETE requests the respective shortcut -// functions can be used. -// -// This function is intended for bulk loading and to allow the usage of less -// frequently used, non-standardized or custom methods (e.g. for internal -// communication with a proxy). -func (group *RouterGroup) Handle(method, p string, handlers []HandlerFunc) { - p = path.Join(group.prefix, p) - handlers = group.allHandlers(handlers) - group.engine.router.Handle(method, p, func(w http.ResponseWriter, req *http.Request, params httprouter.Params) { - group.createContext(w, req, params, handlers).Next() - }) -} - -// POST is a shortcut for router.Handle("POST", path, handle) -func (group *RouterGroup) POST(path string, handlers ...HandlerFunc) { - group.Handle("POST", path, handlers) -} - -// GET is a shortcut for router.Handle("GET", path, handle) -func (group *RouterGroup) GET(path string, handlers ...HandlerFunc) { - group.Handle("GET", path, handlers) -} - -// DELETE is a shortcut for router.Handle("DELETE", path, handle) -func (group *RouterGroup) DELETE(path string, handlers ...HandlerFunc) { - group.Handle("DELETE", path, handlers) -} - -// PATCH is a shortcut for router.Handle("PATCH", path, handle) -func (group *RouterGroup) PATCH(path string, handlers ...HandlerFunc) { - group.Handle("PATCH", path, handlers) -} - -// PUT is a shortcut for router.Handle("PUT", path, handle) -func (group *RouterGroup) PUT(path string, handlers ...HandlerFunc) { - group.Handle("PUT", path, handlers) -} - -func (group *RouterGroup) allHandlers(handlers []HandlerFunc) []HandlerFunc { - local := append(group.Handlers, handlers...) - if group.parent != nil { - return group.parent.allHandlers(local) - } else { - return local - } -} - -/************************************/ -/****** FLOW AND ERROR MANAGEMENT****/ -/************************************/ - -// Next should be used only in the middlewares. -// It executes the pending handlers in the chain inside the calling handler. -// See example in github. -func (c *Context) Next() { - c.index++ - s := int8(len(c.handlers)) - for ; c.index < s; c.index++ { - c.handlers[c.index](c) - } -} - -// Forces the system to do not continue calling the pending handlers. -// For example, the first handler checks if the request is authorized. If it's not, context.Abort(401) should be called. -// The rest of pending handlers would never be called for that request. -func (c *Context) Abort(code int) { - c.Writer.WriteHeader(code) - c.index = AbortIndex -} - -// Fail is the same than Abort plus an error message. -// Calling `context.Fail(500, err)` is equivalent to: -// ``` -// context.Error("Operation aborted", err) -// context.Abort(500) -// ``` -func (c *Context) Fail(code int, err error) { - c.Error(err, "Operation aborted") - c.Abort(code) -} - -// Attachs an error to the current context. The error is pushed to a list of errors. -// It's a gooc idea to call Error for each error ocurred during the resolution of a request. -// A middleware can be used to collect all the errors and push them to a database together, print a log, or append it in the HTTP response. -func (c *Context) Error(err error, meta interface{}) { - c.Errors = append(c.Errors, ErrorMsg{ - Message: err.Error(), - Meta: meta, - }) -} - -/************************************/ -/******** METADATA MANAGEMENT********/ -/************************************/ - -// Sets a new pair key/value just for the specefied context. -// It also lazy initializes the hashmap -func (c *Context) Set(key string, item interface{}) { - if c.Keys == nil { - c.Keys = make(map[string]interface{}) - } - c.Keys[key] = item -} - -// Returns the value for the given key. -// It panics if the value doesn't exist. -func (c *Context) Get(key string) interface{} { - var ok bool - var item interface{} - if c.Keys != nil { - item, ok = c.Keys[key] - } else { - item, ok = nil, false - } - if !ok || item == nil { - log.Panicf("Key %s doesn't exist", key) - } - return item -} - -/************************************/ -/******** ENCOGING MANAGEMENT********/ -/************************************/ - -// Like ParseBody() but this method also writes a 400 error if the json is not valid. -func (c *Context) EnsureBody(item interface{}) bool { - if err := c.ParseBody(item); err != nil { - c.Fail(400, err) - return false - } - return true -} - -// Parses the body content as a JSON input. It decodes the json payload into the struct specified as a pointer. -func (c *Context) ParseBody(item interface{}) error { - decoder := json.NewDecoder(c.Req.Body) - if err := decoder.Decode(&item); err == nil { - return Validate(c, item) - } else { - return err - } -} - -// Serializes the given struct as a JSON into the response body in a fast and efficient way. -// It also sets the Content-Type as "application/json" -func (c *Context) JSON(code int, obj interface{}) { - c.Writer.WriteHeader(code) - c.Writer.Header().Set("Content-Type", "application/json") - encoder := json.NewEncoder(c.Writer) - if err := encoder.Encode(obj); err != nil { - c.Error(err, obj) - http.Error(c.Writer, err.Error(), 500) - } -} - -// Serializes the given struct as a XML into the response body in a fast and efficient way. -// It also sets the Content-Type as "application/xml" -func (c *Context) XML(code int, obj interface{}) { - c.Writer.WriteHeader(code) - c.Writer.Header().Set("Content-Type", "application/xml") - encoder := xml.NewEncoder(c.Writer) - if err := encoder.Encode(obj); err != nil { - c.Error(err, obj) - http.Error(c.Writer, err.Error(), 500) - } -} - -// Renders the HTTP template specified by his file name. -// It also update the HTTP code and sets the Content-Type as "text/html". -// See http://golang.org/doc/articles/wiki/ -func (c *Context) HTML(code int, name string, data interface{}) { - c.Writer.WriteHeader(code) - c.Writer.Header().Set("Content-Type", "text/html") - if err := c.engine.HTMLTemplates.ExecuteTemplate(c.Writer, name, data); err != nil { - c.Error(err, map[string]interface{}{ - "name": name, - "data": data, - }) - http.Error(c.Writer, err.Error(), 500) - } -} - -// Writes the given string into the response body and sets the Content-Type to "text/plain" -func (c *Context) String(code int, msg string) { - c.Writer.Header().Set("Content-Type", "text/plain") - c.Writer.WriteHeader(code) - c.Writer.Write([]byte(msg)) -} - -// Writes some data into the body stream and updates the HTTP code -func (c *Context) Data(code int, data []byte) { - c.Writer.WriteHeader(code) - c.Writer.Write(data) -} diff --git a/images/12-quotes.png b/images/12-quotes.png new file mode 100755 index 0000000000000000000000000000000000000000..695ef112c7e4291f13683628054fcc2d0ef2621c GIT binary patch literal 1509 zcmVvPva0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU%heKGvzBlWRX*WlvE8+FYTo-J!a(38G2{Q9J> zQh}I9L`J4QwlB!Iv`>iX$c~T(PpY#Ws%6WZj9bJrZ28jzs%6QB5QENJdzVK--~mqz zZrPxt?Kvd%%8(4O_n0K749O@B$p9Nec*A?cDFi$4VA+hecX=w;pDdd>AfB~XLRyk| z7kgA7%7A3FC2><*V17B06M}hT@38Y)-bGBv8bgmu`=`33${`g28DMwnng$@FBp^fJ zGb%_G(lGdQWjp0fqX2`yuSCs*LbA)SB^`Gj;_RHT^C6~MD#Es>FLQ|NkToX?RkfY> z6sm?q%|F)VLT4e%QAyZ1P*k0tc_stY{*9>ljlz?YmA!;jRgk~RtbH@VHJSgngb3Q5k6ThgaIv4tn@)j7=96d%;qFb0 zO5NY)qCiQ6xU-FmMr5FH1(vybx7#3G4JieJ(@SIuq2Bfnu^e7oD?JfIjR(m7rm$2t z#9SjJ_wbNFfe*sZ`-HyUE4fEv$}Tt8u7?o66LHOIU-NPlvW~wP+GQrEL9;oBe=B9+?%m9on4?5#U$Q>>L zXcKZP_?b;E$r$1(O$Zq>1TeA4B^(L4Ysw`tol4rPgEK|L%(JYiNTLFulY^Mzndm5l zGa*Bt)Ac^Au2_lfAmx$hmqkxV{=X5z{p{RK^xXa;g!}QV9SPYn#xssRWOd4&(JCYY zkLqIk*a_JuLU<9f?b*X!Gsd&iA!NxIfU&a#Iy0rSgUK2I0Q$rfK-Y)6Vv1*}TV+)Y zJAbe!%a^ee!tr}NI`>HtSus@oqHh10YybeUZNW($4phs{$x7WS>+%LJUS++T5swQz zFv0U^d@3p4P%@FWs~k{pD0Q!$CE0q`3GC(;bSJIpbl&NdJMr1{ZPt3Gi`0;M5h$O) zpec9VC?@ztATsi{&?_}T_$Fne(|HS00M9$$&ZSefOG6MJJS2KJ=RK!>ArzJJ)&riE zE*V-mq$UPuSc1CVJP_pDb8wx0PLL;0SRERb>z$7p#|8S*0Wl!wxoO7kQ$PpmnirXqBD&~v_oNl1$RG{p&ZHZ3tl}A8O*7WNLmWk^K8ePdn zPD8BMFDFjcZs`l|6CueGA&HP=iI7A{vP4KCBv~RP5t59P{SsgRl$3Egb&r(r00000 LNkvXXu0mjf|FpX> literal 0 HcmV?d00001 diff --git a/images/Git-Icon-Black2.png b/images/Git-Icon-Black2.png new file mode 100755 index 0000000000000000000000000000000000000000..79c1d25f8b04db362da8fa4a09012efd2b1e9f3f GIT binary patch literal 2524 zcmZuz2~-nV7OkX!AX^k239?DsN;6JK1SKqyh=PEvh~PjQA)tt~jhM8eR7rqDY&nWz zJ1R(nh#O8Hk!T|#nhC{83yxuRquG*T37`@PM201R^9#5()f*IT&ER zrbPY0WY*r4UhD9^UB6ei!o1&7I4QCnDa8^1m_>h_a@#9DWUt zAKCY>o76Pn@W?w}sPN%~N+KEzGidEUFseaIfhXnZ5tKYU=3v(ij> znH3K)8}h|7`%R!QsU0SRp;#c46ww-`1rd2N*jRiS!={uOMo^EGe#l3a2ts+MSDH*lz@qP!ljsZ1GH9#r zQC^sGEp(+X(W!a7b`eyJwzGoKb!2QUKjq1m$}8>=tuL`Le9gpCvWOL}9Oa*b8I!Ul z0(@m(*WOkH@7-A7P<)QkAQeU%cxWwKvfd*2^Q`Feq!>{}y;Bn-jf$&>ok%!ls*=E% zIM=H#TrP$gNgH>+#Hvqv`Tk7+49hoxldKQua-wx>CX(D~9!N|){-%*F=v%oH!PAr_ zduNwaYfrJ6>1S~CgV>Rmb^=vSH!U+TLN>_?wU`v_b3VgyK>s-=>=cl&50x}As;Ny+Z?n;h zcPMcikz{o5AZ#H;RIBkHy}_Dpb-yDlk$nIieiO8a#|KKbRH!l&dLAQDc!<51D56m> z_62(;O@}!M@Z0)h&~P%TJ^Z%|CmS}^8jQQ#Z<^%Px~g)-xmQh>_O{$BVjQt3tcpBv zwCP3P^*CIiOsJ`Oh*iKy8*8Cg;^kB~!LUndBUjCS*m@_i&GYr4d;Gzt->yfCGTLN~ zJ{rsMKt&sh+`1&QDyZSAD8cVec>g?5%RrW$4&ryACkzG2s`jk>FomrTt%N{l--Pi3j;VWn14{)GqP@0He$KSaZZ zl8d8;2gZ87@uH%ydVd=;+I2T0RCV!j06I9;?4|noy{R-k<;lzUhf4}FAEzCy7#3gh z${D&S8!@aHOuO;q?`_G?9ag_ClkY-VZY-)DEFFk6rMG)umUW%^zNs=KVy4~qx@@~V zd(4HW@DLPc3QeW2{+-|n>trKl4+eY7&%*t(k-t<7sEHXGh|NfI+?c~Q_T1#{61p6# zEW)yI+*Se>vq_wLi9Mj6g?J%h}Df2PvIQUst%G-?6vL zp~9(6nYPHn2BC*x)vRP>dT2=Av(yry_h6Nb`$5}k#5y+Q{m*^mE92(U91`A<+gEM| z^`k{7eK98G;{=ecmBc|Fjc|QJ9@Li#6JY!{N{2Dj{#%~H0BjQhppsFaU=20sHt4vk zM5qcQKd-T>F<+6`%rGcLGfcd5nIgdM_h)^ck^@*T$ld5SN!tk>JONOL@KZH1zL zxg^fQqvTY(0ZPxneB)k>aE-+B?mPXq1W$MG=tk&AFsG58i8VZhtswI5x@QDIwH;kw zlaL2z*S1y@nb=*6HXi{I;)6YbJ{GGSUVXO36{-_P2jKOoFtaIn3!yGMduNFx&TQh{ zU-t(Q_><7S>=r^#hG5x3iP|Ct*Y97>Q_uuMDQj*MZeLF(Gn-lD@$@R=8gMwLh8&FC zQWpz8%~;O|PdPWj?Gx$rrXUz)I?(ZJLKdhTVu|c_9iPSKve8|Q%5HHrwjDxpKvoNp zrH|SK(wrb%uI0=nUj1wj$b#UcG zcQ~>oab%B^{pEEeD=p|glvl){vS|ZZBptD1GSM21rXST}3Y_X2QwWlYB$}cI70cM# zm?DNroetz{N*oQ7(UeQEH~aVlxJp4`NT9`NYQw2fEJG~wU^ar9ydk1(5w z%a`5)Q#S((wnTjxuihFBKHTMz=4{$~1q{Mxi78>J;C^m7OxMPgFsLAui=lnp7;#rC zE@K(hGB$8qxe#Ht&O0MfH|yt|x#HCa=bX)DRSfK95-W%w7tKgO=q(VnX5P#auNKb7 zB(Z54BBoGf*r*uahOrr{S88OQ~0D&3}idO+hRoHg$-FZ*J;)Y*ghlNRJ3>{q%m H=EQ#iaBa(o literal 0 HcmV?d00001 diff --git a/images/email.png b/images/email.png new file mode 100755 index 0000000000000000000000000000000000000000..8aa1528ba4dbf9890cbe817f1abbb6bda1c2f47e GIT binary patch literal 1460 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 literal 0 HcmV?d00001 diff --git a/images/globe2.png b/images/globe2.png new file mode 100755 index 0000000000000000000000000000000000000000..41bb76e94318db9cb07e54cc30e11224f94fc9b3 GIT binary patch literal 2780 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

bf!oC*w%_H#>Fov!DLd#r(0aMEhjKais$dn&kx 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 literal 0 HcmV?d00001 diff --git a/images/idea2.png b/images/idea2.png new file mode 100755 index 0000000000000000000000000000000000000000..152bde703eca4afed4caa84103c686472b9b7e59 GIT binary patch literal 3775 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 literal 0 HcmV?d00001 diff --git a/images/pull2.png b/images/pull2.png new file mode 100755 index 0000000000000000000000000000000000000000..627dc53cd962ba3f5c2a5b97ec153045845d88f4 GIT binary patch literal 6666 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 Uk8tPxwEzGB07*qoM6N<$f~8{ahX4Qo literal 0 HcmV?d00001 diff --git a/images/sample1.png b/images/sample1.png new file mode 100755 index 0000000000000000000000000000000000000000..885abc8b93c95d2f5071ec85131629a17adfa3a9 GIT binary patch literal 39881 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 SIJ}I1NtG4U<;&&FL;nYdZp|nF literal 0 HcmV?d00001 diff --git a/images/sample11.png b/images/sample11.png new file mode 100755 index 0000000000000000000000000000000000000000..f9bb814d5d6e42bb736993940b38e6ea44b40d07 GIT binary patch literal 21418 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 U_GdJgtoFjj84}JFVx4IJ2b8GiHUIzs literal 0 HcmV?d00001 diff --git a/images/sentry2.png b/images/sentry2.png new file mode 100755 index 0000000000000000000000000000000000000000..b00745e7b20433966c5d6136adeb1b57d58ceed6 GIT binary patch literal 2285 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100755 index 00000000..0b9f64d0 --- /dev/null +++ b/index.html @@ -0,0 +1,184 @@ + + + + + + + Gin Web Framework + + + + + + + + + + + + +

+
+
+

Performance and productivity can work together

+

Gin is a web framework written in Golang. It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity, you will love Gin.

+ +
+
+
+
+

Low Overhead Powerful API

+

You can add global, per-group, and per-route middlewares, thousands of nested groups, nice JSON validation and rendering. And the performance will be still great! Gin uses httprouter internally, the fastest HTTP router for + Golang. Httprouter was created by Julien Schmidt and it’s based in a Radix Tree algorithm. This explains the good performance and scalability of Gin.

+
+
+

Some cool middlewares

+

If you used Martini before, Gin will be familiar to you. If you don’t, you will need 10 minutes to learn everything.

Check out the
Sentry midDlEware
+

More coming soon!

+
+
+

Crystal Clear

+

If you used Martini before, Gin will be familiar to you. If you don’t, you will need 10 minutes to learn everything.

+
+
+
+ 539f93b8f281585418675d91_sample1.png +
+
+ 539f93ccf281585418675d92_sample11.png +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Full Featured

+
+
+
I
+

Fast

+

Radix tree based routing, small memory foot print. No reflection. Predictable API performance. 

+
+
+
II
+

Middleware support

+

A incoming HTTP request can by handled by a chain of middlewares and the final action. +
For example: Logger, Authorization, GZIP and finally post a message in the DB.

+
+
+
III
+

Crash-free

+

Gin can catch a panic occurred during a HTTP request and recover it. This way, your server will be always available. It’s also possible to report this panic to Sentry for example!

+
+
+
+
+
IV
+

JSON validation

+

Gin can parse and validate the JSON of a request, checking for example the existence of required values.

+
+
+
V
+

Routes grouping

+

Organize your routes better. Authorization required vs non required, different API versions... In addition, the groups can be nested unlimitedly without degrading performance!

+
+
+
VI
+

Error management

+

Gin provides a convenient way to collect all the errors occurred during a HTTP request. Eventually, a middleware can write them to a log file, to a database and send them through the network.

+
+
+
+
+
VII
+

Rendering built-in

+

Gin provides a easy to use API for JSON, XML and HTML rendering.

+
+
+
VIII
+

Extendable

+

Creating a new middleware is so easy, just check out the sample codes.

+
+
+
+
+
+
+
+

How to contribute?

+

Gin uses a MIT license, this means that you can do whatever you want, but please, keep the reference to the original authors! To contribute you should fork it in Github, add some changes and start posting + Pull Requests, we would love to merge them.

+
+
+
+
1. Fork
+ 539e4fca30eda3837a903182_Git-Icon-Black2.png +
+
+
+
+
2. Commit
+ 539e4fbbaa3db5690ebc0c8c_idea2.png +
+
+
+
+
3. Pull request
+ 539e4fadaa3db5690ebc0c8b_pull2.png +
+
+
+
+
+
+
+
+
+ +
+ +
+
+
+ + + + + \ No newline at end of file diff --git a/js/modernizr.js b/js/modernizr.js new file mode 100755 index 00000000..3ecc2844 --- /dev/null +++ b/js/modernizr.js @@ -0,0 +1,8 @@ +/* Modernizr 2.7.1 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-video-touch-shiv-cssclasses-teststyles-prefixes-cssclassprefix:w!mod! + */ +;window.Modernizr=function(a,b,c){function w(a){j.cssText=a}function x(a,b){return w(m.join(a+";")+(b||""))}function y(a,b){return typeof a===b}function z(a,b){return!!~(""+a).indexOf(b)}function A(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:y(f,"function")?f.bind(d||b):f}return!1}var d="2.7.1",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={},o={},p={},q=[],r=q.slice,s,t=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},u={}.hasOwnProperty,v;!y(u,"undefined")&&!y(u.call,"undefined")?v=function(a,b){return u.call(a,b)}:v=function(a,b){return b in a&&y(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=r.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(r.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(r.call(arguments)))};return e}),n.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:t(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},n.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c};for(var B in n)v(n,B)&&(s=B.toLowerCase(),e[s]=n[B](),q.push((e[s]?"":"no-")+s));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)v(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" w-mod-"+(b?"":"no-")+a),e[a]=b}return e},w(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=m,e.testStyles=t,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" w-mod-js w-mod-"+q.join(" w-mod-"):""),e}(this,this.document); +/** + * Webflow: Custom tests + */ +Modernizr.addTest('ios', /(ipod|iphone|ipad)/i.test(navigator.userAgent)); diff --git a/js/webflow.js b/js/webflow.js new file mode 100755 index 00000000..08584b91 --- /dev/null +++ b/js/webflow.js @@ -0,0 +1,2775 @@ +/*! + * ---------------------------------------------------------------------- + * Webflow: Front-end site library + * @license MIT + * Other scripts may access this api using an async handler: + * var Webflow = Webflow || []; + * Webflow.push(readyFunction); + * ---------------------------------------------------------------------- + */ +var Webflow = { w: Webflow }; +Webflow.init = function () { + 'use strict'; + + var $ = window.$; + var api = {}; + var modules = {}; + var primary = []; + var secondary = this.w || []; + var $win = $(window); + var _ = api._ = underscore(); + var domready = false; + var tram = window.tram; + var Modernizr = window.Modernizr; + tram.config.hideBackface = false; + tram.config.keepInherited = true; + + /** + * Webflow.define() - Define a webflow.js module + * @param {string} name + * @param {function} factory + */ + api.define = function (name, factory) { + var module = modules[name] = factory($, _); + if (!module) return; + // If running in Webflow app, subscribe to design/preview events + if (api.env()) { + $.isFunction(module.design) && window.addEventListener('__wf_design', module.design); + $.isFunction(module.preview) && window.addEventListener('__wf_preview', module.preview); + } + // Look for a ready method on module + if (module.ready && $.isFunction(module.ready)) { + // If domready has already happened, call ready method + if (domready) module.ready(); + // Otherwise push ready method into primary queue + else primary.push(module.ready); + } + }; + + /** + * Webflow.require() - Load a Webflow.js module + * @param {string} name + * @return {object} + */ + api.require = function (name) { + return modules[name]; + }; + + /** + * Webflow.push() - Add a ready handler into secondary queue + * @param {function} ready Callback to invoke on domready + */ + api.push = function (ready) { + // If domready has already happened, invoke handler + if (domready) { + $.isFunction(ready) && ready(); + return; + } + // Otherwise push into secondary queue + secondary.push(ready); + }; + + /** + * Webflow.env() - Get the state of the Webflow app + * @param {string} mode [optional] + * @return {boolean} + */ + api.env = function (mode) { + var designFlag = window.__wf_design; + var inApp = typeof designFlag != 'undefined'; + if (!mode) return inApp; + if (mode == 'design') return inApp && designFlag; + if (mode == 'preview') return inApp && !designFlag; + if (mode == 'slug') return inApp && window.__wf_slug; + }; + + // Feature detects + browser sniffs ಠ_ಠ + var userAgent = navigator.userAgent.toLowerCase(); + var appVersion = navigator.appVersion.toLowerCase(); + api.env.touch = ('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch; + var chrome = api.env.chrome = (window.chrome || /chrome/.test(userAgent)) && parseInt(appVersion.match(/chrome\/(\d+)\./)[1], 10); + var ios = api.env.ios = Modernizr && Modernizr.ios; + api.env.safari = /safari/.test(userAgent) && !chrome && !ios; + + /** + * Webflow.script() - Append script to document head + * @param {string} src + */ + api.script = function (src) { + var doc = document; + var scriptNode = doc.createElement('script'); + scriptNode.type = 'text/javascript'; + scriptNode.src = src; + doc.getElementsByTagName('head')[0].appendChild(scriptNode); + }; + + /** + * Webflow.resize, Webflow.scroll - throttled event proxies + */ + var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow'; + var scrollEvents = 'scroll.webflow ' + resizeEvents; + api.resize = eventProxy($win, resizeEvents); + api.scroll = eventProxy($win, scrollEvents); + api.redraw = eventProxy(); + + // Create a proxy instance for throttled events + function eventProxy(target, types) { + + // Set up throttled method (using custom frame-based _.throttle) + var handlers = []; + var proxy = {}; + proxy.up = _.throttle(function (evt) { + _.each(handlers, function (h) { h(evt); }); + }); + + // Bind events to target + if (target && types) target.on(types, proxy.up); + + /** + * Add an event handler + * @param {function} handler + */ + proxy.on = function (handler) { + if (typeof handler != 'function') return; + if (_.contains(handlers, handler)) return; + handlers.push(handler); + }; + + /** + * Remove an event handler + * @param {function} handler + */ + proxy.off = function (handler) { + handlers = _.filter(handlers, function (h) { + return h !== handler; + }); + }; + return proxy; + } + + // Webflow.location - Wrap window.location in api + api.location = function (url) { + window.location = url; + }; + + // Webflow.app - Designer-specific methods + api.app = api.env() ? {} : null; + if (api.app) { + + // Trigger redraw for specific elements + var Event = window.Event; + var redraw = new Event('__wf_redraw'); + api.app.redrawElement = function (i, el) { el.dispatchEvent(redraw); }; + + // Webflow.location - Re-route location change to trigger an event + api.location = function (url) { + window.dispatchEvent(new CustomEvent('__wf_location', { detail: url })); + }; + } + + // DOM ready - Call primary and secondary handlers + $(function () { + domready = true; + $.each(primary.concat(secondary), function (index, value) { + $.isFunction(value) && value(); + }); + // Trigger resize + api.resize.up(); + }); + + /*! + * Webflow._ (aka) Underscore.js 1.5.2 (custom build) + * _.each + * _.map + * _.filter + * _.any + * _.contains + * _.delay + * _.defer + * _.throttle (webflow) + * _.debounce + * _.keys + * _.has + * + * http://underscorejs.org + * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Underscore may be freely distributed under the MIT license. + */ + function underscore() { + var _ = {}; + + // Current version. + _.VERSION = '1.5.2-Webflow'; + + // Establish the object that gets returned to break out of a loop iteration. + var breaker = {}; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + concat = ArrayProto.concat, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeForEach = ArrayProto.forEach, + nativeMap = ArrayProto.map, + nativeReduce = ArrayProto.reduce, + nativeReduceRight = ArrayProto.reduceRight, + nativeFilter = ArrayProto.filter, + nativeEvery = ArrayProto.every, + nativeSome = ArrayProto.some, + nativeIndexOf = ArrayProto.indexOf, + nativeLastIndexOf = ArrayProto.lastIndexOf, + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles objects with the built-in `forEach`, arrays, and raw objects. + // Delegates to **ECMAScript 5**'s native `forEach` if available. + var each = _.each = _.forEach = function(obj, iterator, context) { + /* jshint shadow:true */ + if (obj == null) return; + if (nativeForEach && obj.forEach === nativeForEach) { + obj.forEach(iterator, context); + } else if (obj.length === +obj.length) { + for (var i = 0, length = obj.length; i < length; i++) { + if (iterator.call(context, obj[i], i, obj) === breaker) return; + } + } else { + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return; + } + } + }; + + // Return the results of applying the iterator to each element. + // Delegates to **ECMAScript 5**'s native `map` if available. + _.map = _.collect = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); + each(obj, function(value, index, list) { + results.push(iterator.call(context, value, index, list)); + }); + return results; + }; + + // Return all the elements that pass a truth test. + // Delegates to **ECMAScript 5**'s native `filter` if available. + // Aliased as `select`. + _.filter = _.select = function(obj, iterator, context) { + var results = []; + if (obj == null) return results; + if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context); + each(obj, function(value, index, list) { + if (iterator.call(context, value, index, list)) results.push(value); + }); + return results; + }; + + // Determine if at least one element in the object matches a truth test. + // Delegates to **ECMAScript 5**'s native `some` if available. + // Aliased as `any`. + var any = _.some = _.any = function(obj, iterator, context) { + iterator || (iterator = _.identity); + var result = false; + if (obj == null) return result; + if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context); + each(obj, function(value, index, list) { + if (result || (result = iterator.call(context, value, index, list))) return breaker; + }); + return !!result; + }; + + // Determine if the array or object contains a given value (using `===`). + // Aliased as `include`. + _.contains = _.include = function(obj, target) { + if (obj == null) return false; + if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; + return any(obj, function(value) { + return value === target; + }); + }; + + // Function (ahem) Functions + // -------------------- + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ return func.apply(null, args); }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = function(func) { + return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); + }; + + // Returns a function, that, when invoked, will only be triggered once every + // browser animation frame - using tram's requestAnimationFrame polyfill. + _.throttle = function(func) { + var wait, args, context; + return function () { + if (wait) return; + wait = true; + args = arguments; + context = this; + tram.frame(function () { + wait = false; + func.apply(context, args); + }); + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + return function() { + context = this; + args = arguments; + timestamp = new Date(); + var later = function() { + var last = (new Date()) - timestamp; + if (last < wait) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) result = func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + if (!timeout) { + timeout = setTimeout(later, wait); + } + if (callNow) result = func.apply(context, args); + return result; + }; + }; + + // Object Functions + // ---------------- + + // Retrieve the names of an object's properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = nativeKeys || function(obj) { + if (obj !== Object(obj)) throw new TypeError('Invalid object'); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + return keys; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return hasOwnProperty.call(obj, key); + }; + + // Export underscore + return _; + } + + // Export api + Webflow = api; +}; +/*! + * ---------------------------------------------------------------------- + * Webflow: 3rd party plugins + */ +/* jshint ignore:start */ +/*! + * tram.js v0.8.0-global + * Cross-browser CSS3 transitions in JavaScript + * https://github.com/bkwld/tram + * MIT License + */ +window.tram=function(t){function i(t,i){var e=new Z.Bare;return e.init(t,i)}function e(t){return t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})}function n(t){var i=parseInt(t.slice(1),16),e=255&i>>16,n=255&i>>8,r=255&i;return[e,n,r]}function r(t,i,e){return"#"+(1<<24|t<<16|i<<8|e).toString(16).slice(1)}function s(){}function a(t,i){_("Type warning: Expected: ["+t+"] Got: ["+typeof i+"] "+i)}function o(t,i,e){_("Units do not match ["+t+"]: "+i+", "+e)}function u(t,i,e){if(void 0!==i&&(e=i),void 0===t)return e;var n=e;return K.test(t)||!V.test(t)?n=parseInt(t,10):V.test(t)&&(n=1e3*parseFloat(t)),0>n&&(n=0),n===n?n:e}function c(t){for(var i=-1,e=t?t.length:0,n=[];e>++i;){var r=t[i];r&&n.push(r)}return n}var h=function(t,i,e){function n(t){return"object"==typeof t}function r(t){return"function"==typeof t}function s(){}function a(o,u){function c(){var t=new h;return r(t.init)&&t.init.apply(t,arguments),t}function h(){}u===e&&(u=o,o=Object),c.Bare=h;var l,f=s[t]=o[t],d=h[t]=c[t]=new s;return d.constructor=c,c.mixin=function(i){return h[t]=c[t]=a(c,i)[t],c},c.open=function(t){if(l={},r(t)?l=t.call(c,d,f,c,o):n(t)&&(l=t),n(l))for(var e in l)i.call(l,e)&&(d[e]=l[e]);return r(d.init)||(d.init=o),c},c.open(u)}return a}("prototype",{}.hasOwnProperty),l={ease:["ease",function(t,i,e,n){var r=(t/=n)*t,s=r*t;return i+e*(-2.75*s*r+11*r*r+-15.5*s+8*r+.25*t)}],"ease-in":["ease-in",function(t,i,e,n){var r=(t/=n)*t,s=r*t;return i+e*(-1*s*r+3*r*r+-3*s+2*r)}],"ease-out":["ease-out",function(t,i,e,n){var r=(t/=n)*t,s=r*t;return i+e*(.3*s*r+-1.6*r*r+2.2*s+-1.8*r+1.9*t)}],"ease-in-out":["ease-in-out",function(t,i,e,n){var r=(t/=n)*t,s=r*t;return i+e*(2*s*r+-5*r*r+2*s+2*r)}],linear:["linear",function(t,i,e,n){return e*t/n+i}],"ease-in-quad":["cubic-bezier(0.550, 0.085, 0.680, 0.530)",function(t,i,e,n){return e*(t/=n)*t+i}],"ease-out-quad":["cubic-bezier(0.250, 0.460, 0.450, 0.940)",function(t,i,e,n){return-e*(t/=n)*(t-2)+i}],"ease-in-out-quad":["cubic-bezier(0.455, 0.030, 0.515, 0.955)",function(t,i,e,n){return 1>(t/=n/2)?e/2*t*t+i:-e/2*(--t*(t-2)-1)+i}],"ease-in-cubic":["cubic-bezier(0.550, 0.055, 0.675, 0.190)",function(t,i,e,n){return e*(t/=n)*t*t+i}],"ease-out-cubic":["cubic-bezier(0.215, 0.610, 0.355, 1)",function(t,i,e,n){return e*((t=t/n-1)*t*t+1)+i}],"ease-in-out-cubic":["cubic-bezier(0.645, 0.045, 0.355, 1)",function(t,i,e,n){return 1>(t/=n/2)?e/2*t*t*t+i:e/2*((t-=2)*t*t+2)+i}],"ease-in-quart":["cubic-bezier(0.895, 0.030, 0.685, 0.220)",function(t,i,e,n){return e*(t/=n)*t*t*t+i}],"ease-out-quart":["cubic-bezier(0.165, 0.840, 0.440, 1)",function(t,i,e,n){return-e*((t=t/n-1)*t*t*t-1)+i}],"ease-in-out-quart":["cubic-bezier(0.770, 0, 0.175, 1)",function(t,i,e,n){return 1>(t/=n/2)?e/2*t*t*t*t+i:-e/2*((t-=2)*t*t*t-2)+i}],"ease-in-quint":["cubic-bezier(0.755, 0.050, 0.855, 0.060)",function(t,i,e,n){return e*(t/=n)*t*t*t*t+i}],"ease-out-quint":["cubic-bezier(0.230, 1, 0.320, 1)",function(t,i,e,n){return e*((t=t/n-1)*t*t*t*t+1)+i}],"ease-in-out-quint":["cubic-bezier(0.860, 0, 0.070, 1)",function(t,i,e,n){return 1>(t/=n/2)?e/2*t*t*t*t*t+i:e/2*((t-=2)*t*t*t*t+2)+i}],"ease-in-sine":["cubic-bezier(0.470, 0, 0.745, 0.715)",function(t,i,e,n){return-e*Math.cos(t/n*(Math.PI/2))+e+i}],"ease-out-sine":["cubic-bezier(0.390, 0.575, 0.565, 1)",function(t,i,e,n){return e*Math.sin(t/n*(Math.PI/2))+i}],"ease-in-out-sine":["cubic-bezier(0.445, 0.050, 0.550, 0.950)",function(t,i,e,n){return-e/2*(Math.cos(Math.PI*t/n)-1)+i}],"ease-in-expo":["cubic-bezier(0.950, 0.050, 0.795, 0.035)",function(t,i,e,n){return 0===t?i:e*Math.pow(2,10*(t/n-1))+i}],"ease-out-expo":["cubic-bezier(0.190, 1, 0.220, 1)",function(t,i,e,n){return t===n?i+e:e*(-Math.pow(2,-10*t/n)+1)+i}],"ease-in-out-expo":["cubic-bezier(1, 0, 0, 1)",function(t,i,e,n){return 0===t?i:t===n?i+e:1>(t/=n/2)?e/2*Math.pow(2,10*(t-1))+i:e/2*(-Math.pow(2,-10*--t)+2)+i}],"ease-in-circ":["cubic-bezier(0.600, 0.040, 0.980, 0.335)",function(t,i,e,n){return-e*(Math.sqrt(1-(t/=n)*t)-1)+i}],"ease-out-circ":["cubic-bezier(0.075, 0.820, 0.165, 1)",function(t,i,e,n){return e*Math.sqrt(1-(t=t/n-1)*t)+i}],"ease-in-out-circ":["cubic-bezier(0.785, 0.135, 0.150, 0.860)",function(t,i,e,n){return 1>(t/=n/2)?-e/2*(Math.sqrt(1-t*t)-1)+i:e/2*(Math.sqrt(1-(t-=2)*t)+1)+i}],"ease-in-back":["cubic-bezier(0.600, -0.280, 0.735, 0.045)",function(t,i,e,n,r){return void 0===r&&(r=1.70158),e*(t/=n)*t*((r+1)*t-r)+i}],"ease-out-back":["cubic-bezier(0.175, 0.885, 0.320, 1.275)",function(t,i,e,n,r){return void 0===r&&(r=1.70158),e*((t=t/n-1)*t*((r+1)*t+r)+1)+i}],"ease-in-out-back":["cubic-bezier(0.680, -0.550, 0.265, 1.550)",function(t,i,e,n,r){return void 0===r&&(r=1.70158),1>(t/=n/2)?e/2*t*t*(((r*=1.525)+1)*t-r)+i:e/2*((t-=2)*t*(((r*=1.525)+1)*t+r)+2)+i}]},f={"ease-in-back":"cubic-bezier(0.600, 0, 0.735, 0.045)","ease-out-back":"cubic-bezier(0.175, 0.885, 0.320, 1)","ease-in-out-back":"cubic-bezier(0.680, 0, 0.265, 1)"},d=document,p=window,b="bkwld-tram",m=/[\-\.0-9]/g,v=/[A-Z]/,g="number",y=/^(rgb|#)/,w=/(em|cm|mm|in|pt|pc|px)$/,k=/(em|cm|mm|in|pt|pc|px|%)$/,x=/(deg|rad|turn)$/,z="unitless",q=/(all|none) 0s ease 0s/,$=/^(width|height)$/,M=" ",A=d.createElement("a"),B=["Webkit","Moz","O","ms"],R=["-webkit-","-moz-","-o-","-ms-"],F=function(t){if(t in A.style)return{dom:t,css:t};var i,e,n="",r=t.split("-");for(i=0;r.length>i;i++)n+=r[i].charAt(0).toUpperCase()+r[i].slice(1);for(i=0;B.length>i;i++)if(e=B[i]+n,e in A.style)return{dom:e,css:R[i]+t}},S=i.support={bind:Function.prototype.bind,transform:F("transform"),transition:F("transition"),backface:F("backface-visibility"),timing:F("transition-timing-function")};if(S.transition){var j=S.timing.dom;if(A.style[j]=l["ease-in-back"][0],!A.style[j])for(var I in f)l[I][0]=f[I]}var G=i.frame=function(){var t=p.requestAnimationFrame||p.webkitRequestAnimationFrame||p.mozRequestAnimationFrame||p.oRequestAnimationFrame||p.msRequestAnimationFrame;return t&&S.bind?t.bind(p):function(t){p.setTimeout(t,16)}}(),T=i.now=function(){var t=p.performance,i=t&&(t.now||t.webkitNow||t.msNow||t.mozNow);return i&&S.bind?i.bind(t):Date.now||function(){return+new Date}}(),U=h(function(i){function n(t,i){var e=c((""+t).split(M)),n=e[0];i=i||{};var r=W[n];if(!r)return _("Unsupported property: "+n);if(!i.weak||!this.props[n]){var s=r[0],a=this.props[n];return a||(a=this.props[n]=new s.Bare),a.init(this.$el,e,r,i),a}}function r(t,i,e){if(t){var r=typeof t;if(i||(this.timer&&this.timer.destroy(),this.queue=[],this.active=!1),"number"==r&&i)return this.timer=new Y({duration:t,context:this,complete:o}),this.active=!0,void 0;if("string"==r&&i){switch(t){case"hide":d.call(this);break;case"stop":h.call(this);break;case"redraw":p.call(this);break;default:n.call(this,t,e&&e[1])}return o.call(this)}if("function"==r)return t.call(this,this),void 0;if("object"==r){var s=0;m.call(this,t,function(t,i){t.span>s&&(s=t.span),t.stop(),t.animate(i)},function(t){"wait"in t&&(s=u(t.wait,0))}),b.call(this),s>0&&(this.timer=new Y({duration:s,context:this}),this.active=!0,i&&(this.timer.complete=o));var a=this,c=!1,l={};G(function(){m.call(a,t,function(t){t.active&&(c=!0,l[t.name]=t.nextStyle)}),c&&a.$el.css(l)})}}}function s(t){t=u(t,0),this.active?this.queue.push({options:t}):(this.timer=new Y({duration:t,context:this,complete:o}),this.active=!0)}function a(t){return this.active?(this.queue.push({options:t,args:arguments}),this.timer.complete=o,void 0):_("No active transition timer. Use start() or wait() before then().")}function o(){if(this.timer&&this.timer.destroy(),this.active=!1,this.queue.length){var t=this.queue.shift();r.call(this,t.options,!0,t.args)}}function h(t){this.timer&&this.timer.destroy(),this.queue=[],this.active=!1;var i;"string"==typeof t?(i={},i[t]=1):i="object"==typeof t&&null!=t?t:this.props,m.call(this,i,g),b.call(this)}function l(t){h.call(this,t),m.call(this,t,y,w)}function f(t){"string"!=typeof t&&(t="block"),this.el.style.display=t}function d(){h.call(this),this.el.style.display="none"}function p(){this.el.offsetHeight}function b(){var t,i,e=[];this.upstream&&e.push(this.upstream);for(t in this.props)i=this.props[t],i.active&&e.push(i.string);e=e.join(","),this.style!==e&&(this.style=e,this.el.style[S.transition.dom]=e)}function m(t,i,r){var s,a,o,u,c=i!==g,h={};for(s in t)o=t[s],s in J?(h.transform||(h.transform={}),h.transform[s]=o):(v.test(s)&&(s=e(s)),s in W?h[s]=o:(u||(u={}),u[s]=o));for(s in h){if(o=h[s],a=this.props[s],!a){if(!c)continue;a=n.call(this,s)}i.call(this,a,o)}r&&u&&r.call(this,u)}function g(t){t.stop()}function y(t,i){t.set(i)}function w(t){this.$el.css(t)}function k(t,e){i[t]=function(){return this.children?x.call(this,e,arguments):(this.el&&e.apply(this,arguments),this)}}function x(t,i){var e,n=this.children.length;for(e=0;n>e;e++)t.apply(this.children[e],i);return this}i.init=function(i){if(this.$el=t(i),this.el=this.$el[0],this.props={},this.queue=[],this.style="",this.active=!1,C.keepInherited&&!C.fallback){var e=L(this.el,"transition");e&&!q.test(e)&&(this.upstream=e)}S.backface&&C.hideBackface&&D(this.el,S.backface.css,"hidden")},k("add",n),k("start",r),k("wait",s),k("then",a),k("next",o),k("stop",h),k("set",l),k("show",f),k("hide",d),k("redraw",p)}),Z=h(U,function(i){function e(i,e){var n=t.data(i,b)||t.data(i,b,new U.Bare);return n.el||n.init(i),e?n.start(e):n}i.init=function(i,n){var r=t(i);if(!r.length)return this;if(1===r.length)return e(r[0],n);var s=[];return r.each(function(t,i){s.push(e(i,n))}),this.children=s,this}}),H=h(function(t){function i(){var t=this.get();this.update("auto");var i=this.get();return this.update(t),i}function e(t,i,e){return void 0!==i&&(e=i),t in l?t:e}function n(t){var i=/rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(t);return(i?r(i[1],i[2],i[3]):t).replace(/#(\w)(\w)(\w)$/,"#$1$1$2$2$3$3")}var s={duration:500,ease:"ease",delay:0};t.init=function(t,i,n,r){this.$el=t,this.el=t[0];var a=i[0];n[2]&&(a=n[2]),Q[a]&&(a=Q[a]),this.name=a,this.type=n[1],this.duration=u(i[1],this.duration,s.duration),this.ease=e(i[2],this.ease,s.ease),this.delay=u(i[3],this.delay,s.delay),this.span=this.duration+this.delay,this.active=!1,this.nextStyle=null,this.auto=$.test(this.name),this.unit=r.unit||this.unit||C.defaultUnit,this.angle=r.angle||this.angle||C.defaultAngle,C.fallback||r.fallback?this.animate=this.fallback:(this.animate=this.transition,this.string=this.name+M+this.duration+"ms"+("ease"!=this.ease?M+l[this.ease][0]:"")+(this.delay?M+this.delay+"ms":""))},t.set=function(t){t=this.convert(t,this.type),this.update(t),this.redraw()},t.transition=function(t){this.active=!0,t=this.convert(t,this.type),this.auto&&("auto"==this.el.style[this.name]&&(this.update(this.get()),this.redraw()),"auto"==t&&(t=i.call(this))),this.nextStyle=t},t.fallback=function(t){var e=this.el.style[this.name]||this.convert(this.get(),this.type);t=this.convert(t,this.type),this.auto&&("auto"==e&&(e=this.convert(this.get(),this.type)),"auto"==t&&(t=i.call(this))),this.tween=new X({from:e,to:t,duration:this.duration,delay:this.delay,ease:this.ease,update:this.update,context:this})},t.get=function(){return L(this.el,this.name)},t.update=function(t){D(this.el,this.name,t)},t.stop=function(){(this.active||this.nextStyle)&&(this.active=!1,this.nextStyle=null,D(this.el,this.name,this.get()));var t=this.tween;t&&t.context&&t.destroy()},t.convert=function(t,i){if("auto"==t&&this.auto)return t;var e,r="number"==typeof t,s="string"==typeof t;switch(i){case g:if(r)return t;if(s&&""===t.replace(m,""))return+t;e="number(unitless)";break;case y:if(s){if(""===t&&this.original)return this.original;if(i.test(t))return"#"==t.charAt(0)&&7==t.length?t:n(t)}e="hex or rgb string";break;case w:if(r)return t+this.unit;if(s&&i.test(t))return t;e="number(px) or string(unit)";break;case k:if(r)return t+this.unit;if(s&&i.test(t))return t;e="number(px) or string(unit or %)";break;case x:if(r)return t+this.angle;if(s&&i.test(t))return t;e="number(deg) or string(angle)";break;case z:if(r)return t;if(s&&k.test(t))return t;e="number(unitless) or string(unit or %)"}return a(e,t),t},t.redraw=function(){this.el.offsetHeight}}),N=h(H,function(t,i){t.init=function(){i.init.apply(this,arguments),this.original||(this.original=this.convert(this.get(),y))}}),O=h(H,function(t,i){t.init=function(){i.init.apply(this,arguments),this.animate=this.fallback},t.get=function(){return this.$el[this.name]()},t.update=function(t){this.$el[this.name](t)}}),P=h(H,function(t,i){function e(t,i){var e,n,r,s,a;for(e in t)s=J[e],r=s[0],n=s[1]||e,a=this.convert(t[e],r),i.call(this,n,a,r)}t.init=function(){i.init.apply(this,arguments),this.current||(this.current={},J.perspective&&C.perspective&&(this.current.perspective=C.perspective,D(this.el,this.name,this.style(this.current)),this.redraw()))},t.set=function(t){e.call(this,t,function(t,i){this.current[t]=i}),D(this.el,this.name,this.style(this.current)),this.redraw()},t.transition=function(t){var i=this.values(t);this.tween=new E({current:this.current,values:i,duration:this.duration,delay:this.delay,ease:this.ease});var e,n={};for(e in this.current)n[e]=e in i?i[e]:this.current[e];this.active=!0,this.nextStyle=this.style(n)},t.fallback=function(t){var i=this.values(t);this.tween=new E({current:this.current,values:i,duration:this.duration,delay:this.delay,ease:this.ease,update:this.update,context:this})},t.update=function(){D(this.el,this.name,this.style(this.current))},t.style=function(t){var i,e="";for(i in t)e+=i+"("+t[i]+") ";return e},t.values=function(t){var i,n={};return e.call(this,t,function(t,e,r){n[t]=e,void 0===this.current[t]&&(i=0,~t.indexOf("scale")&&(i=1),this.current[t]=this.convert(i,r))}),n}}),X=h(function(i){function e(t){1===d.push(t)&&G(a)}function a(){var t,i,e,n=d.length;if(n)for(G(a),i=T(),t=n;t--;)e=d[t],e&&e.render(i)}function u(i){var e,n=t.inArray(i,d);n>=0&&(e=d.slice(n+1),d.length=n,e.length&&(d=d.concat(e)))}function c(t){return Math.round(t*p)/p}function h(t,i,e){return r(t[0]+e*(i[0]-t[0]),t[1]+e*(i[1]-t[1]),t[2]+e*(i[2]-t[2]))}var f={ease:l.ease[1],from:0,to:1};i.init=function(t){this.duration=t.duration||0,this.delay=t.delay||0;var i=t.ease||f.ease;l[i]&&(i=l[i][1]),"function"!=typeof i&&(i=f.ease),this.ease=i,this.update=t.update||s,this.complete=t.complete||s,this.context=t.context||this,this.name=t.name;var e=t.from,n=t.to;void 0===e&&(e=f.from),void 0===n&&(n=f.to),this.unit=t.unit||"","number"==typeof e&&"number"==typeof n?(this.begin=e,this.change=n-e):this.format(n,e),this.value=this.begin+this.unit,this.start=T(),t.autoplay!==!1&&this.play()},i.play=function(){this.active||(this.start||(this.start=T()),this.active=!0,e(this))},i.stop=function(){this.active&&(this.active=!1,u(this))},i.render=function(t){var i,e=t-this.start;if(this.delay){if(this.delay>=e)return;e-=this.delay}if(this.duration>e){var n=this.ease(e,0,1,this.duration);return i=this.startRGB?h(this.startRGB,this.endRGB,n):c(this.begin+n*this.change),this.value=i+this.unit,this.update.call(this.context,this.value),void 0}i=this.endHex||this.begin+this.change,this.value=i+this.unit,this.update.call(this.context,this.value),this.complete.call(this.context),this.destroy()},i.format=function(t,i){if(i+="",t+="","#"==t.charAt(0))return this.startRGB=n(i),this.endRGB=n(t),this.endHex=t,this.begin=0,this.change=1,void 0;if(!this.unit){var e=i.replace(m,""),r=t.replace(m,"");e!==r&&o("tween",i,t),this.unit=e}i=parseFloat(i),t=parseFloat(t),this.begin=this.value=i,this.change=t-i},i.destroy=function(){this.stop(),this.context=null,this.ease=this.update=this.complete=s};var d=[],p=1e3}),Y=h(X,function(t){t.init=function(t){this.duration=t.duration||0,this.complete=t.complete||s,this.context=t.context,this.play()},t.render=function(t){var i=t-this.start;this.duration>i||(this.complete.call(this.context),this.destroy())}}),E=h(X,function(t,i){t.init=function(t){this.context=t.context,this.update=t.update,this.tweens=[],this.current=t.current;var i,e;for(i in t.values)e=t.values[i],this.current[i]!==e&&this.tweens.push(new X({name:i,from:this.current[i],to:e,duration:t.duration,delay:t.delay,ease:t.ease,autoplay:!1}));this.play()},t.render=function(t){var i,e,n=this.tweens.length,r=!1;for(i=n;i--;)e=this.tweens[i],e.context&&(e.render(t),this.current[e.name]=e.value,r=!0);return r?(this.update&&this.update.call(this.context),void 0):this.destroy()},t.destroy=function(){if(i.destroy.call(this),this.tweens){var t,e=this.tweens.length;for(t=e;t--;)this.tweens[t].destroy();this.tweens=null,this.current=null}}}),C=i.config={defaultUnit:"px",defaultAngle:"deg",keepInherited:!1,hideBackface:!1,perspective:"",fallback:!S.transition,agentTests:[]};i.fallback=function(t){if(!S.transition)return C.fallback=!0;C.agentTests.push("("+t+")");var i=RegExp(C.agentTests.join("|"),"i");C.fallback=i.test(navigator.userAgent)},i.fallback("6.0.[2-5] Safari"),i.tween=function(t){return new X(t)},i.delay=function(t,i,e){return new Y({complete:i,duration:t,context:e})},t.fn.tram=function(t){return i.call(null,this,t)};var D=t.style,L=t.css,Q={transform:S.transform&&S.transform.css},W={color:[N,y],background:[N,y,"background-color"],"outline-color":[N,y],"border-color":[N,y],"border-top-color":[N,y],"border-right-color":[N,y],"border-bottom-color":[N,y],"border-left-color":[N,y],"border-width":[H,w],"border-top-width":[H,w],"border-right-width":[H,w],"border-bottom-width":[H,w],"border-left-width":[H,w],"border-spacing":[H,w],"letter-spacing":[H,w],margin:[H,w],"margin-top":[H,w],"margin-right":[H,w],"margin-bottom":[H,w],"margin-left":[H,w],padding:[H,w],"padding-top":[H,w],"padding-right":[H,w],"padding-bottom":[H,w],"padding-left":[H,w],"outline-width":[H,w],opacity:[H,g],top:[H,k],right:[H,k],bottom:[H,k],left:[H,k],"font-size":[H,k],"text-indent":[H,k],"word-spacing":[H,k],width:[H,k],"min-width":[H,k],"max-width":[H,k],height:[H,k],"min-height":[H,k],"max-height":[H,k],"line-height":[H,z],"scroll-top":[O,g,"scrollTop"],"scroll-left":[O,g,"scrollLeft"]},J={};S.transform&&(W.transform=[P],J={x:[k,"translateX"],y:[k,"translateY"],rotate:[x],rotateX:[x],rotateY:[x],scale:[g],scaleX:[g],scaleY:[g],skew:[x],skewX:[x],skewY:[x]}),S.transform&&S.backface&&(J.z=[k,"translateZ"],J.rotateZ=[x],J.scaleZ=[g],J.perspective=[w]);var K=/ms/,V=/s|\./,_=function(){var t="warn",i=window.console;return i&&i[t]?function(e){i[t](e)}:s}();return t.tram=i}(window.jQuery);/*! + * jQuery-ajaxTransport-XDomainRequest - v1.0.1 - 2013-10-17 + * https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest + * Copyright (c) 2013 Jason Moon (@JSONMOON) + * Licensed MIT (/blob/master/LICENSE.txt) + */ +(function($){if(!$.support.cors&&$.ajaxTransport&&window.XDomainRequest){var n=/^https?:\/\//i;var o=/^get|post$/i;var p=new RegExp('^'+location.protocol,'i');var q=/text\/html/i;var r=/\/json/i;var s=/\/xml/i;$.ajaxTransport('* text html xml json',function(i,j,k){if(i.crossDomain&&i.async&&o.test(i.type)&&n.test(i.url)&&p.test(i.url)){var l=null;var m=(j.dataType||'').toLowerCase();return{send:function(f,g){l=new XDomainRequest();if(/^\d+$/.test(j.timeout)){l.timeout=j.timeout}l.ontimeout=function(){g(500,'timeout')};l.onload=function(){var a='Content-Length: '+l.responseText.length+'\r\nContent-Type: '+l.contentType;var b={code:200,message:'success'};var c={text:l.responseText};try{if(m==='html'||q.test(l.contentType)){c.html=l.responseText}else if(m==='json'||(m!=='text'&&r.test(l.contentType))){try{c.json=$.parseJSON(l.responseText)}catch(e){b.code=500;b.message='parseerror'}}else if(m==='xml'||(m!=='text'&&s.test(l.contentType))){var d=new ActiveXObject('Microsoft.XMLDOM');d.async=false;try{d.loadXML(l.responseText)}catch(e){d=undefined}if(!d||!d.documentElement||d.getElementsByTagName('parsererror').length){b.code=500;b.message='parseerror';throw'Invalid XML: '+l.responseText;}c.xml=d}}catch(parseMessage){throw parseMessage;}finally{g(b.code,b.message,c,a)}};l.onprogress=function(){};l.onerror=function(){g(500,'error',{text:l.responseText})};var h='';if(j.data){h=($.type(j.data)==='string')?j.data:$.param(j.data)}l.open(i.type,i.url);l.send(h)},abort:function(){if(l){l.abort()}}}}})}})(jQuery); +/*! + * tap.js + * Copyright (c) 2013 Alex Gibson, http://alxgbsn.co.uk/ + * Released under MIT license + */ +(function (window, document) { + + 'use strict'; + + function Tap(el) { + el = typeof el === 'object' ? el : document.getElementById(el); + this.element = el; + this.moved = false; //flags if the finger has moved + this.startX = 0; //starting x coordinate + this.startY = 0; //starting y coordinate + this.hasTouchEventOccured = false; //flag touch event + el.addEventListener('touchstart', this, false); + el.addEventListener('touchmove', this, false); + el.addEventListener('touchend', this, false); + el.addEventListener('touchcancel', this, false); + el.addEventListener('mousedown', this, false); + el.addEventListener('mouseup', this, false); + } + + Tap.prototype.start = function (e) { + if (e.type === 'touchstart') { + this.hasTouchEventOccured = true; + } + this.moved = false; + this.startX = e.type === 'touchstart' ? e.touches[0].clientX : e.clientX; + this.startY = e.type === 'touchstart' ? e.touches[0].clientY : e.clientY; + }; + + Tap.prototype.move = function (e) { + //if finger moves more than 10px flag to cancel + if (Math.abs(e.touches[0].clientX - this.startX) > 10 || Math.abs(e.touches[0].clientY - this.startY) > 10) { + this.moved = true; + } + }; + + Tap.prototype.end = function (e) { + var evt; + + if (this.hasTouchEventOccured && e.type === 'mouseup') { + e.preventDefault(); + e.stopPropagation(); + this.hasTouchEventOccured = false; + return; + } + + if (!this.moved) { + //create custom event + if (typeof document.CustomEvent !== "undefined") { + evt = new document.CustomEvent('tap', { + bubbles: true, + cancelable: true + }); + } else { + evt = document.createEvent('Event'); + evt.initEvent('tap', true, true); + } + e.target.dispatchEvent(evt); + } + }; + + Tap.prototype.cancel = function (e) { + this.hasTouchEventOccured = false; + this.moved = false; + this.startX = 0; + this.startY = 0; + }; + + Tap.prototype.destroy = function () { + var el = this.element; + el.removeEventListener('touchstart', this, false); + el.removeEventListener('touchmove', this, false); + el.removeEventListener('touchend', this, false); + el.removeEventListener('touchcancel', this, false); + el.removeEventListener('mousedown', this, false); + el.removeEventListener('mouseup', this, false); + this.element = null; + }; + + Tap.prototype.handleEvent = function (e) { + switch (e.type) { + case 'touchstart': this.start(e); break; + case 'touchmove': this.move(e); break; + case 'touchend': this.end(e); break; + case 'touchcancel': this.cancel(e); break; + case 'mousedown': this.start(e); break; + case 'mouseup': this.end(e); break; + } + }; + + window.Tap = Tap; + +}(window, document)); +/* jshint ignore:end */ +/** + * ---------------------------------------------------------------------- + * Init lib after plugins + */ +Webflow.init(); +/** + * ---------------------------------------------------------------------- + * Webflow: Interactions + */ +Webflow.define('ix', function ($, _) { + 'use strict'; + + var api = {}; + var designer; + var $win = $(window); + var namespace = '.w-ix'; + var tram = window.tram; + var env = Webflow.env; + var ios = env.ios; + var inApp = env(); + var emptyFix = env.chrome && env.chrome < 35; + var transNone = 'none 0s ease 0s'; + var introEvent = 'w-ix-intro' + namespace; + var outroEvent = 'w-ix-outro' + namespace; + var eventQueue = []; + var $subs = $(); + var config = {}; + var anchors = []; + var loads = []; + var readys = []; + var unique = 0; + var store; + + // ----------------------------------- + // Module methods + + api.init = function (list) { + setTimeout(function () { init(list); }, 1); + }; + + api.preview = function () { + designer = false; + setTimeout(function () { init(window.__wf_ix); }, 1); + }; + + api.design = function () { + designer = true; + $subs.each(teardown); + Webflow.scroll.off(scroll); + asyncEvents(); + anchors = []; + loads = []; + readys = []; + }; + + api.run = run; + api.events = {}; + api.style = inApp ? styleApp : stylePub; + + // ----------------------------------- + // Private methods + + function init(list) { + if (!list) return; + store = {}; + + // Map all interactions to a hash using slug as key. + config = {}; + _.each(list, function (item) { + config[item.slug] = item.value; + }); + + // Build each element's interaction keying from data attribute + var els = $('[data-ix]'); + els.each(teardown); + els.each(build); + + // Listen for scroll events if any anchors exist + if (anchors.length) { + Webflow.scroll.on(scroll); + setTimeout(scroll, 1); + } + + // Handle loads or readys if they exist + if (loads.length) $win.on('load', runLoads); + if (readys.length) setTimeout(runReadys, 1); + + // Init module events + initEvents(); + } + + function build(i, el) { + var $el = $(el); + var id = $el.attr('data-ix'); + var ix = config[id]; + if (!ix) return; + var triggers = ix.triggers; + if (!triggers) return; + var state = store[id] || (store[id] = {}); + var $proxy; + + // Set initial styles, unless we detect an iOS device + any non-iOS triggers + var setStyles = !(ios && _.any(triggers, isNonIOS)); + if (setStyles) api.style($el, ix.style); + + _.each(triggers, function (trigger) { + var type = trigger.type; + var stepsB = trigger.stepsB && trigger.stepsB.length; + + function runA() { run(trigger, $el, { group: 'A' }); } + function runB() { run(trigger, $el, { group: 'B' }); } + + if (type == 'load') { + (trigger.preload && !inApp) ? loads.push(runA) : readys.push(runA); + return; + } + + if (type == 'click') { + var stateKey = 'click:' + unique++; + if (trigger.descend) stateKey += ':descend'; + if (trigger.siblings) stateKey += ':siblings'; + if (trigger.selector) stateKey += ':' + trigger.selector; + + $el.on('click' + namespace, function (evt) { + if ($el.attr('href') === '#') evt.preventDefault(); + + run(trigger, $el, { group: state[stateKey] ? 'B' : 'A' }); + if (stepsB) state[stateKey] = !state[stateKey]; + }); + $subs = $subs.add($el); + return; + } + + if (type == 'hover') { + $el.on('mouseenter' + namespace, runA); + $el.on('mouseleave' + namespace, runB); + $subs = $subs.add($el); + return; + } + + if (type == 'tabs') { + $proxy = $el.closest('.w-tab-link, .w-tab-pane'); + $proxy.on(introEvent, runA).on(outroEvent, runB); + $subs = $subs.add($proxy); + return; + } + + if (type == 'slider') { + $proxy = $el.closest('.w-slide'); + $proxy.on(introEvent, runA).on(outroEvent, runB); + $subs = $subs.add($proxy); + return; + } + + // Ignore the following triggers on iOS devices + if (ios) return; + + if (type == 'scroll') { + anchors.push({ + el: $el, trigger: trigger, state: { active: false }, + offsetTop: convert(trigger.offsetTop), + offsetBot: convert(trigger.offsetBot) + }); + return; + } + }); + } + + function isNonIOS(trigger) { + return trigger.type == 'scroll'; + } + + function convert(offset) { + if (!offset) return 0; + offset = offset + ''; + var result = parseInt(offset, 10); + if (result !== result) return 0; + if (offset.indexOf('%') > 0) { + result = result / 100; + if (result >= 1) result = 0.999; + } + return result; + } + + function teardown(i, el) { + $(el).off(namespace); + } + + function scroll() { + var viewTop = $win.scrollTop(); + var viewHeight = $win.height(); + + // Check each anchor for a valid scroll trigger + var count = anchors.length; + for (var i = 0; i < count; i++) { + var anchor = anchors[i]; + var $el = anchor.el; + var trigger = anchor.trigger; + var stepsB = trigger.stepsB && trigger.stepsB.length; + var state = anchor.state; + var top = $el.offset().top; + var height = $el.outerHeight(); + var offsetTop = anchor.offsetTop; + var offsetBot = anchor.offsetBot; + if (offsetTop < 1 && offsetTop > 0) offsetTop *= viewHeight; + if (offsetBot < 1 && offsetBot > 0) offsetBot *= viewHeight; + var active = (top + height - offsetTop >= viewTop && top + offsetBot <= viewTop + viewHeight); + if (active === state.active) continue; + if (active === false && !stepsB) continue; + state.active = active; + run(trigger, $el, { group: active ? 'A' : 'B' }); + } + } + + function runLoads() { + var count = loads.length; + for (var i = 0; i < count; i++) { + loads[i](); + } + } + + function runReadys() { + var count = readys.length; + for (var i = 0; i < count; i++) { + readys[i](); + } + } + + function run(trigger, $el, opts, replay) { + opts = opts || {}; + var done = opts.done; + + // Do not run in designer unless forced + if (designer && !opts.force) return; + + // Operate on a set of grouped steps + var group = opts.group || 'A'; + var loop = trigger['loop' + group]; + var steps = trigger['steps' + group]; + if (!steps || !steps.length) return; + if (steps.length < 2) loop = false; + + // One-time init before any loops + if (!replay) { + + // Find selector within element descendants, siblings, or query whole document + var selector = trigger.selector; + if (selector) { + $el = ( + trigger.descend ? $el.find(selector) : + trigger.siblings ? $el.siblings(selector) : + $(selector) + ); + if (inApp) $el.attr('data-ix-affect', 1); + } + + // Apply empty fix for certain Chrome versions + if (emptyFix) $el.addClass('w-ix-emptyfix'); + } + + var _tram = tram($el); + + // Add steps + var meta = {}; + for (var i = 0; i < steps.length; i++) { + addStep(_tram, steps[i], meta); + } + + function fin() { + // Run trigger again if looped + if (loop) return run(trigger, $el, opts, true); + + // Reset any 'auto' values + if (meta.width == 'auto') _tram.set({ width: 'auto' }); + if (meta.height == 'auto') _tram.set({ height: 'auto' }); + + // Run callback + done && done(); + } + + // Add final step to queue if tram has started + meta.start ? _tram.then(fin) : fin(); + } + + function addStep(_tram, step, meta) { + var addMethod = 'add'; + var startMethod = 'start'; + + // Once the transition has started, we will always use then() to add to the queue. + if (meta.start) addMethod = startMethod = 'then'; + + // Parse transitions string on the current step + var transitions = step.transition; + if (transitions) { + transitions = transitions.split(','); + for (var i = 0; i < transitions.length; i++) { + _tram[addMethod](transitions[i]); + } + } + + // Build a clean object to pass to the tram method + var clean = tramify(step) || {}; + + // Store last width and height values + if (clean.width != null) meta.width = clean.width; + if (clean.height != null) meta.height = clean.height; + + // When transitions are not present, set values immediately and continue queue. + if (transitions == null) { + + // If we have started, wrap set() in then() and reset queue + if (meta.start) { + _tram.then(function () { + var queue = this.queue; + this.set(clean); + if (clean.display) { + _tram.redraw(); + Webflow.redraw.up(); + } + this.queue = queue; + this.next(); + }); + } else { + _tram.set(clean); + + // Always redraw after setting display + if (clean.display) { + _tram.redraw(); + Webflow.redraw.up(); + } + } + + // Use the wait() method to kick off queue in absence of transitions. + var wait = clean.wait; + if (wait != null) { + _tram.wait(wait); + meta.start = true; + } + + // Otherwise, when transitions are present + } else { + + // If display is present, handle it separately + if (clean.display) { + var display = clean.display; + delete clean.display; + + // If we've already started, we need to wrap it in a then() + if (meta.start) { + _tram.then(function () { + var queue = this.queue; + this.set({ display: display }).redraw(); + Webflow.redraw.up(); + this.queue = queue; + this.next(); + }); + } else { + _tram.set({ display: display }).redraw(); + Webflow.redraw.up(); + } + } + + // Otherwise, start a transition using the current start method. + _tram[startMethod](clean); + meta.start = true; + } + } + + // (In app) Set styles immediately and manage upstream transition + function styleApp(el, data) { + var _tram = tram(el); + + // Get computed transition value + el.css('transition', ''); + var computed = el.css('transition'); + + // If computed is disabled, clear upstream + if (computed === transNone) computed = _tram.upstream = null; + + // Disable upstream temporarily + _tram.upstream = transNone; + + // Set values immediately + _tram.set(tramify(data)); + + // Only restore upstream in preview mode + _tram.upstream = computed; + } + + // (Published) Set styles immediately on specified jquery element + function stylePub(el, data) { + tram(el).set(tramify(data)); + } + + // Build a clean object for tram + function tramify(obj) { + var result = {}; + var found = false; + for (var x in obj) { + if (x === 'transition') continue; + result[x] = obj[x]; + found = true; + } + // If empty, return null for tram.set/stop compliance + return found ? result : null; + } + + // Events used by other webflow modules + var events = { + reset: function (i, el) { + el.__wf_intro = null; + }, + intro: function (i, el) { + if (el.__wf_intro) return; + el.__wf_intro = true; + $(el).triggerHandler(introEvent); + }, + outro: function (i, el) { + if (!el.__wf_intro) return; + el.__wf_intro = null; + $(el).triggerHandler(outroEvent); + } + }; + + // Trigger events in queue + point to sync methods + function initEvents() { + var count = eventQueue.length; + for (var i = 0; i < count; i++) { + var memo = eventQueue[i]; + memo[0](0, memo[1]); + } + eventQueue = []; + $.extend(api.events, events); + } + + // Replace events with async methods prior to init + function asyncEvents() { + _.each(events, function (func, name) { + api.events[name] = function (i, el) { + eventQueue.push([func, el]); + }; + }); + } + + asyncEvents(); + + // Export module + return api; +}); +/** + * ---------------------------------------------------------------------- + * Webflow: Touch events for jQuery based on tap.js + */ +Webflow.define('touch', function ($, _) { + 'use strict'; + + var Tap = window.Tap; + var namespace = '.w-events-'; + var dataKey = namespace + 'tap'; + var fallback = !document.addEventListener; + + // jQuery event "tap" - use click in old + non-touch browsers + $.event.special.tap = (fallback || !Webflow.env.touch) ? { bindType: 'click', delegateType: 'click' } : { + setup: function () { + $.data(this, dataKey, new Tap(this)); + + // Returning false instructs jQuery to use native `addEventListener` on the element. + return false; + }, + teardown: function () { + var tap = $.data(this, dataKey); + if (tap && tap.destroy) { + tap.destroy(); + $.removeData(this, dataKey); + } + + // Returning false makes sure the native event handlers bound above are removed. + return false; + } + }; + + // No swipe events for old browsers + if (fallback || !Object.create) return; + + // jQuery event "swipe" + dataKey = namespace + 'swipe'; + + $.event.special.swipe = { + setup: function () { + $.data(this, dataKey, new Swipe(this)); + + // Returning false instructs jQuery to use native `addEventListener` on the element. + return false; + }, + teardown: function () { + var tap = $.data(this, dataKey); + if (tap && tap.destroy) { + tap.destroy(); + $.removeData(this, dataKey); + } + + // Returning false makes sure the native event handlers bound above are removed. + return false; + } + }; + + /** + * Swipe - extends Tap, supports mouse swipes! + */ + function Swipe(el) { + Tap.call(this, el); + } + + (function () { + var supr = Tap.prototype; + var proto = Swipe.prototype = Object.create(supr); + var threshold = Math.round(screen.width * 0.04) || 20; + if (threshold > 40) threshold = 40; + + proto.start = function (e) { + supr.start.call(this, e); + this.element.addEventListener('mousemove', this, false); + document.addEventListener('mouseup', this, false); + this.velocityX = 0; + this.lastX = this.startX; + this.enabled = true; + }; + + proto.move = _.throttle(function (e) { + if (!this.enabled) return; + var x = e.touches ? e.touches[0].clientX : e.clientX; + this.velocityX = x - this.lastX; + this.lastX = x; + if (Math.abs(this.velocityX) > threshold) { + this.end(e); + } + }); + + proto.end = function (e) { + if (!this.enabled) return; + var velocityX = this.velocityX; + this.cancel(); + if (Math.abs(velocityX) > threshold) { + $(this.element).triggerHandler('swipe', { direction: velocityX > 0 ? 'right' : 'left' }); + } + }; + + proto.destroy = function () { + this.cancel(); + supr.destroy.call(this); + }; + + proto.cancel = function () { + this.enabled = false; + this.element.removeEventListener('mousemove', this, false); + document.removeEventListener('mouseup', this, false); + supr.cancel.call(this); + }; + + proto.handleEvent = function (e) { + if (e.type == 'mousemove') return this.move(e); + supr.handleEvent.call(this, e); + }; + }()); + +}); +/** + * ---------------------------------------------------------------------- + * Webflow: Forms + */ +Webflow.define('forms', function ($, _) { + 'use strict'; + + var api = {}; + var $doc = $(document); + var $forms; + var loc = window.location; + var retro = window.XDomainRequest && !window.atob; + var namespace = '.w-form'; + var siteId; + var emailField = /e(\-)?mail/i; + var emailValue = /^\S+@\S+$/; + var alert = window.alert; + + // MailChimp domains: list-manage.com + mirrors + var chimpRegex = /list-manage[1-9]?.com/i; + + api.ready = function () { + // Init forms + init(); + + // Wire events + listen && listen(); + listen = null; + }; + + api.preview = api.design = function () { + init(); + }; + + function init() { + siteId = $('html').attr('data-wf-site'); + + $forms = $(namespace + ' form'); + $forms.each(build); + } + + function build(i, el) { + // Store form state using namespace + var $el = $(el); + var data = $.data(el, namespace); + if (!data) data = $.data(el, namespace, { form: $el }); // data.form + + reset(data); + var wrap = $el.closest('div.w-form'); + data.done = wrap.find('> .w-form-done'); + data.fail = wrap.find('> .w-form-fail'); + + var action = data.action = $el.attr('action'); + data.handler = null; + data.redirect = $el.attr('data-redirect'); + + // MailChimp form + if (chimpRegex.test(action)) { data.handler = submitMailChimp; return; } + + // Custom form action + if (action) return; + + // Webflow form + if (siteId) { data.handler = submitWebflow; return; } + + // Alert for disconnected Webflow forms + disconnected(); + } + + function listen() { + // Handle form submission for Webflow forms + $doc.on('submit', namespace + ' form', function(evt) { + var data = $.data(this, namespace); + if (data.handler) { + data.evt = evt; + data.handler(data); + } + }); + } + + // Reset data common to all submit handlers + function reset(data) { + var btn = data.btn = data.form.find(':input[type="submit"]'); + data.wait = data.btn.attr('data-wait') || null; + data.success = false; + btn.prop('disabled', false); + data.label && btn.val(data.label); + } + + // Disable submit button + function disableBtn(data) { + var btn = data.btn; + var wait = data.wait; + btn.prop('disabled', true); + // Show wait text and store previous label + if (wait) { + data.label = btn.val(); + btn.val(wait); + } + } + + // Find form fields, validate, and set value pairs + function findFields(form, result) { + var status = null; + result = result || {}; + + // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas + form.find(':input:not([type="submit"])').each(function(i, el) { + var field = $(el); + var type = field.attr('type'); + var name = field.attr('data-name') || field.attr('name') || ('Field ' + (i + 1)); + var value = field.val(); + + if (type == 'checkbox') { + value = field.is(':checked'); + } if (type == 'radio') { + // Radio group value already processed + if (result[name] === null || typeof result[name] == 'string') { + return; + } + + value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null; + } + + if (typeof value == 'string') value = $.trim(value); + result[name] = value; + status = status || getStatus(field, name, value); + }); + + return status; + } + + function getStatus(field, name, value) { + var status = null; + if (!field.attr('required')) return null; + if (!value) status = 'Please fill out the required field: ' + name; + else if (emailField.test(name) || emailField.test(field.attr('type'))) { + if (!emailValue.test(value)) status = 'Please enter a valid email address for: ' + name; + } + return status; + } + + // Submit form to Webflow + function submitWebflow(data) { + reset(data); + + var form = data.form; + var payload = { + name: form.attr('data-name') || form.attr('name') || 'Untitled Form', + source: loc.href, + test: Webflow.env(), + fields: {} + }; + + preventDefault(data); + + // Find & populate all fields + var status = findFields(form, payload.fields); + if (status) return alert(status); + + // Disable submit button + disableBtn(data); + + // Read site ID + // NOTE: If this site is exported, the HTML tag must retain the data-wf-site attribute for forms to work + if (!siteId) { afterSubmit(data); return; } + var url = 'https://webflow.com/api/v1/form/' + siteId; + + // Work around same-protocol IE XDR limitation + if (retro && url.indexOf('https://webflow.com') >= 0) { + url = url.replace('https://webflow.com/', 'http://data.webflow.com/'); + } + + $.ajax({ + url: url, + type: 'POST', + data: payload, + dataType: 'json', + crossDomain: true + }).done(function () { + data.success = true; + afterSubmit(data); + }).fail(function () { + afterSubmit(data); + }); + } + + // Submit form to MailChimp + function submitMailChimp(data) { + reset(data); + + var form = data.form; + var payload = {}; + + // Skip Ajax submission if http/s mismatch, fallback to POST instead + if (/^https/.test(loc.href) && !/^https/.test(data.action)) { + form.attr('method', 'post'); + return; + } + + preventDefault(data); + + // Find & populate all fields + var status = findFields(form, payload); + if (status) return alert(status); + + // Disable submit button + disableBtn(data); + + // Use special format for MailChimp params + var fullName; + _.each(payload, function (value, key) { + if (emailField.test(key)) payload.EMAIL = value; + if (/^((full[ _-]?)?name)$/i.test(key)) fullName = value; + if (/^(first[ _-]?name)$/i.test(key)) payload.FNAME = value; + if (/^(last[ _-]?name)$/i.test(key)) payload.LNAME = value; + }); + + if (fullName && !payload.FNAME) { + fullName = fullName.split(' '); + payload.FNAME = fullName[0]; + payload.LNAME = payload.LNAME || fullName[1]; + } + + // Use the (undocumented) MailChimp jsonp api + var url = data.action.replace('/post?', '/post-json?') + '&c=?'; + // Add special param to prevent bot signups + var userId = url.indexOf('u=')+2; + userId = url.substring(userId, url.indexOf('&', userId)); + var listId = url.indexOf('id=')+3; + listId = url.substring(listId, url.indexOf('&', listId)); + payload['b_' + userId + '_' + listId] = ''; + + $.ajax({ + url: url, + data: payload, + dataType: 'jsonp' + }).done(function (resp) { + data.success = (resp.result == 'success' || /already/.test(resp.msg)); + if (!data.success) console.info('MailChimp error: ' + resp.msg); + afterSubmit(data); + }).fail(function () { + afterSubmit(data); + }); + } + + // Common callback which runs after all Ajax submissions + function afterSubmit(data) { + var form = data.form; + var wrap = form.closest('div.w-form'); + var redirect = data.redirect; + var success = data.success; + + // Redirect to a success url if defined + if (success && redirect) { + Webflow.location(redirect); + return; + } + + // Show or hide status divs + data.done.toggle(success); + data.fail.toggle(!success); + + // Hide form on success + form.toggle(!success); + + // Reset data and enable submit button + reset(data); + } + + function preventDefault(data) { + data.evt && data.evt.preventDefault(); + data.evt = null; + } + + var disconnected = _.debounce(function () { + alert('Oops! This page has a form that is powered by Webflow, but important code was removed that is required to make the form work. Please contact support@webflow.com to fix this issue.'); + }, 100); + + // Export module + return api; +}); +/** + * ---------------------------------------------------------------------- + * Webflow: Maps widget + */ +Webflow.define('maps', function ($, _) { + 'use strict'; + + var api = {}; + var $doc = $(document); + var google; + var $maps; + var namespace = '.w-widget-map'; + + // ----------------------------------- + // Module methods + + api.ready = function () { + // Init Maps on the front-end + if (!Webflow.env()) initMaps(); + }; + + api.preview = function () { + // Update active map nodes + $maps = $doc.find(namespace); + // Listen for resize events + Webflow.resize.off(triggerRedraw); + if ($maps.length) { + Webflow.resize.on(triggerRedraw); + triggerRedraw(); + } + }; + + api.design = function (evt) { + // Update active map nodes + $maps = $doc.find(namespace); + // Stop listening for resize events + Webflow.resize.off(triggerRedraw); + // Redraw to account for page changes + $maps.length && _.defer(triggerRedraw); + }; + + // ----------------------------------- + // Private methods + + // Trigger redraw in designer or preview mode + function triggerRedraw() { + if ($maps.length && Webflow.app) { + $maps.each(Webflow.app.redrawElement); + } + } + + function initMaps() { + $maps = $doc.find(namespace); + if ($maps.length) { + Webflow.script('https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=_wf_maps_loaded'); + window._wf_maps_loaded = function () { + window._wf_maps_loaded = function () {}; + google = window.google; + $maps.each(renderMap); + Webflow.resize.on(resizeMaps); + Webflow.redraw.on(resizeMaps); + }; + } + } + + // Render map onto each element + function renderMap(i, el) { + var data = $(el).data(); + getState(el, data); + } + + function resizeMaps() { + $maps.each(resizeMap); + } + + // Resize map when window changes + function resizeMap(i, el) { + var state = getState(el); + google.maps.event.trigger(state.map, 'resize'); + state.setMapPosition(); + } + + // Store state on element data + var store = 'w-widget-map'; + function getState(el, data) { + + var state = $.data(el, store); + if (state) return state; + + var $el = $(el); + state = $.data(el, store, { + // Default options + latLng: '51.511214,-0.119824', + tooltip: '', + style: 'roadmap', + zoom: 12, + + // Marker + marker: new google.maps.Marker({ + draggable: false + }), + + // Tooltip infowindow + infowindow: new google.maps.InfoWindow({ + disableAutoPan: true + }) + }); + + // LatLng center point + var latLng = data.widgetLatlng || state.latLng; + state.latLng = latLng; + var coords = latLng.split(','); + var latLngObj = new google.maps.LatLng(coords[0], coords[1]); + state.latLngObj = latLngObj; + + // Disable touch events + var mapDraggable = (Webflow.env.touch && data.disableTouch) ? false : true; + + // Map instance + state.map = new google.maps.Map(el, { + center: state.latLngObj, + zoom: state.zoom, + maxZoom: 18, + mapTypeControl: false, + panControl: false, + streetViewControl: false, + scrollwheel: !data.disableScroll, + draggable: mapDraggable, + zoomControl: true, + zoomControlOptions: { + style: google.maps.ZoomControlStyle.SMALL + }, + mapTypeId: state.style + }); + state.marker.setMap(state.map); + + // Set map position and offset + state.setMapPosition = function () { + state.map.setCenter(state.latLngObj); + var offsetX = 0; + var offsetY = 0; + var padding = $el.css(['paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft']); + offsetX -= parseInt(padding.paddingLeft, 10); + offsetX += parseInt(padding.paddingRight, 10); + offsetY -= parseInt(padding.paddingTop, 10); + offsetY += parseInt(padding.paddingBottom, 10); + if (offsetX || offsetY) { + state.map.panBy(offsetX, offsetY); + } + $el.css('position', ''); // Remove injected position + }; + + // Fix position after first tiles have loaded + google.maps.event.addListener(state.map, 'tilesloaded', function () { + google.maps.event.clearListeners(state.map, 'tilesloaded'); + state.setMapPosition(); + }); + + // Set initial position + state.setMapPosition(); + state.marker.setPosition(state.latLngObj); + state.infowindow.setPosition(state.latLngObj); + + // Draw tooltip + var tooltip = data.widgetTooltip; + if (tooltip) { + state.tooltip = tooltip; + state.infowindow.setContent(tooltip); + if (!state.infowindowOpen) { + state.infowindow.open(state.map, state.marker); + state.infowindowOpen = true; + } + } + + // Map style - options.style + var style = data.widgetStyle; + if (style) { + state.map.setMapTypeId(style); + } + + // Zoom - options.zoom + var zoom = data.widgetZoom; + if (zoom != null) { + state.zoom = zoom; + state.map.setZoom(+zoom); + } + + // Click marker to open in google maps + google.maps.event.addListener(state.marker, 'click', function() { + window.open('https://maps.google.com/?z=' + state.zoom + '&daddr=' + state.latLng); + }); + + return state; + } + + // Export module + return api; +}); +/** + * ---------------------------------------------------------------------- + * Webflow: Google+ widget + */ +Webflow.define('gplus', function ($) { + 'use strict'; + + var $doc = $(document); + var api = {}; + + api.ready = function () { + // Load Google+ API on the front-end + if (!Webflow.env()) init(); + }; + + function init() { + $doc.find('.w-widget-gplus').length && Webflow.script('https://apis.google.com/js/plusone.js'); + } + + // Export module + return api; +}); +/** + * ---------------------------------------------------------------------- + * Webflow: Smooth scroll + */ +Webflow.define('scroll', function ($) { + 'use strict'; + + var $doc = $(document); + var win = window; + var loc = win.location; + var validHash = /^[a-zA-Z][\w:.-]*$/; + + function ready() { + // If hash is already present on page load, scroll to it right away + if (loc.hash) { + findEl(loc.hash.substring(1)); + } + + // When clicking on a link, check if it links to another part of the page + $doc.on('click', 'a', function(e) { + if (Webflow.env('design')) { + return; + } + + // Ignore links being used by jQuery mobile + if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) return; + + var hash = this.hash ? this.hash.substring(1) : null; + if (hash) { + findEl(hash, e); + } + }); + } + + function findEl(hash, e) { + if (!validHash.test(hash)) return; + + var el = $('#' + hash); + if (!el.length) { + return; + } + + if (e) { + e.preventDefault(); + e.stopPropagation(); + } + + // Push new history state + if (loc.hash !== hash && win.history && win.history.pushState) { + win.history.pushState(null, null, '#' + hash); + } + + // If a fixed header exists, offset for the height + var header = $('header, body > .header, body > .w-nav'); + var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0; + + win.setTimeout(function() { + scroll(el, offset); + }, e ? 0 : 300); + } + + function scroll(el, offset){ + var start = $(win).scrollTop(); + var end = el.offset().top - offset; + + // If specified, scroll so that the element ends up in the middle of the viewport + if (el.data('scroll') == 'mid') { + var available = $(win).height() - offset; + var elHeight = el.outerHeight(); + if (elHeight < available) { + end -= Math.round((available - elHeight) / 2); + } + } + + var mult = 1; + + // Check for custom time multiplier on the body and the element + $('body').add(el).each(function(i) { + var time = parseFloat($(this).attr('data-scroll-time'), 10); + if (!isNaN(time) && (time === 0 || time > 0)) { + mult = time; + } + }); + + // Shim for IE8 and below + if (!Date.now) { + Date.now = function() { return new Date().getTime(); }; + } + + var clock = Date.now(); + var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function(fn) { win.setTimeout(fn, 15); }; + var duration = (472.143 * Math.log(Math.abs(start - end) +125) - 2000) * mult; + + var step = function() { + var elapsed = Date.now() - clock; + win.scroll(0, getY(start, end, elapsed, duration)); + + if (elapsed <= duration) { + animate(step); + } + }; + + step(); + } + + function getY(start, end, elapsed, duration) { + if (elapsed > duration) { + return end; + } + + return start + (end - start) * ease(elapsed / duration); + } + + function ease(t) { + return t<0.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1; + } + + // Export module + return { ready: ready }; +}); +/** + * ---------------------------------------------------------------------- + * Webflow: Auto-select links to current page or section + */ +Webflow.define('links', function ($, _) { + 'use strict'; + + var api = {}; + var $win = $(window); + var designer; + var inApp = Webflow.env(); + var location = window.location; + var linkCurrent = 'w--current'; + var validHash = /^#[a-zA-Z][\w:.-]*$/; + var indexPage = /index\.(html|php)$/; + var dirList = /\/$/; + var anchors; + + // ----------------------------------- + // Module methods + + api.ready = api.design = api.preview = init; + + // ----------------------------------- + // Private methods + + function init() { + designer = inApp && Webflow.env('design'); + + // Reset scroll listener, init anchors + Webflow.scroll.off(scroll); + anchors = []; + + // Test all links for a selectable href + var links = document.links; + for (var i = 0; i < links.length; ++i) { + select(links[i]); + } + + // Listen for scroll if any anchors exist + if (anchors.length) { + Webflow.scroll.on(scroll); + scroll(); + } + } + + function select(link) { + var href = link.getAttribute('href'); + + // Ignore any hrefs with a colon to safely avoid all uri schemes + if (href.indexOf(':') >= 0) return; + + var $link = $(link); + + // Check for valid hash links w/ sections and use scroll anchor + if (href.indexOf('#') === 0 && validHash.test(href)) { + var $section = $(href); + $section.length && anchors.push({ link: $link, sec: $section, active: false }); + return; + } + + // Determine whether the link should be selected + var slug = (inApp ? Webflow.env('slug') : location.pathname) || ''; + var match = (link.href === location.href) || (href === slug) || (indexPage.test(href) && dirList.test(slug)); + setClass($link, linkCurrent, match); + } + + function scroll() { + var viewTop = $win.scrollTop(); + var viewHeight = $win.height(); + + // Check each anchor for a section in view + _.each(anchors, function (anchor) { + var $link = anchor.link; + var $section = anchor.sec; + var top = $section.offset().top; + var height = $section.outerHeight(); + var offset = viewHeight * 0.5; + var active = ($section.is(':visible') && + top + height - offset >= viewTop && + top + offset <= viewTop + viewHeight); + if (anchor.active === active) return; + anchor.active = active; + setClass($link, linkCurrent, active); + if (designer) $link[0].__wf_current = active; + }); + } + + function setClass($elem, className, add) { + var exists = $elem.hasClass(className); + if (add && exists) return; + if (!add && !exists) return; + add ? $elem.addClass(className) : $elem.removeClass(className); + } + + // Export module + return api; +}); +/** + * ---------------------------------------------------------------------- + * Webflow: Slider component + */ +Webflow.define('slider', function ($, _) { + 'use strict'; + + var api = {}; + var tram = window.tram; + var $doc = $(document); + var $sliders; + var designer; + var inApp = Webflow.env(); + var namespace = '.w-slider'; + var dot = '
'; + var ix = Webflow.require('ix'); + ix = ix && ix.events; + var fallback; + var redraw; + + // ----------------------------------- + // Module methods + + api.ready = function () { + init(); + }; + + api.design = function () { + designer = true; + init(); + }; + + api.preview = function () { + designer = false; + init(); + }; + + api.redraw = function () { + redraw = true; + init(); + }; + + // ----------------------------------- + // Private methods + + function init() { + // Find all sliders on the page + $sliders = $doc.find(namespace); + $sliders.each(build); + redraw = null; + if (fallback) return; + + // Wire events + listen && listen(); + listen = null; + } + + function listen() { + Webflow.resize.on(function () { + $sliders.each(render); + }); + + Webflow.redraw.on(api.redraw); + } + + function build(i, el) { + var $el = $(el); + + // Store slider state in data + var data = $.data(el, namespace); + if (!data) data = $.data(el, namespace, { index: 0, el: $el, config: {} }); + data.mask = $el.children('.w-slider-mask'); + data.left = $el.children('.w-slider-arrow-left'); + data.right = $el.children('.w-slider-arrow-right'); + data.nav = $el.children('.w-slider-nav'); + data.slides = data.mask.children('.w-slide'); + if (ix) data.slides.each(ix.reset); + if (redraw) data.maskWidth = 0; + + // Disable in old browsers + if (!tram.support.transform) { + data.left.hide(); + data.right.hide(); + data.nav.hide(); + fallback = true; + return; + } + + // Remove old events + data.el.off(namespace); + data.left.off(namespace); + data.right.off(namespace); + data.nav.off(namespace); + + // Set config from data attributes + configure(data); + + // Add events based on mode + if (designer) { + data.el.on('setting' + namespace, handler(data)); + killTimer(data); + data.hasTimer = false; + } else { + data.el.on('swipe' + namespace, handler(data)); + data.left.on('tap' + namespace, previous(data)); + data.right.on('tap' + namespace, next(data)); + + // Start timer if autoplay is true, only once + if (data.config.autoplay && !data.hasTimer) { + data.hasTimer = true; + startTimer(data); + } + } + + // Listen to nav events + data.nav.on('tap' + namespace, '> div', handler(data)); + + // Remove gaps from formatted html (for inline-blocks) + if (!inApp) { + data.mask.contents().filter(function() { + return this.nodeType === 3; + }).remove(); + } + + // Run first render + render(i, el); + } + + function configure(data) { + var config = {}; + + config.depth = 1; + config.crossOver = 0; + + // Set config options from data attributes + config.animation = data.el.attr('data-animation') || 'slide'; + if (config.animation == 'outin') { + config.animation = 'cross'; + config.crossOver = 0.5; + } + config.easing = data.el.attr('data-easing') || 'ease'; + + var duration = data.el.attr('data-duration'); + config.duration = duration != null ? +duration : 500; + + if (+data.el.attr('data-infinite')) config.infinite = true; + + if (+data.el.attr('data-hide-arrows')) { + config.hideArrows = true; + } else if (data.config.hideArrows) { + data.left.show(); + data.right.show(); + } + + if (+data.el.attr('data-autoplay')) { + config.autoplay = true; + config.delay = +data.el.attr('data-delay') || 2000; + // Disable timer on first touch or mouse down + var touchEvents = 'mousedown' + namespace + ' touchstart' + namespace; + if (!designer) data.el.off(touchEvents).one(touchEvents, function () { + killTimer(data); + }); + } + + // Use edge buffer to help calculate page count + var arrowWidth = data.right.width(); + config.edge = arrowWidth ? arrowWidth + 40 : 100; + + // Store config in data + data.config = config; + } + + function previous(data) { + return function (evt) { + change(data, { index: data.index - 1, vector: -1 }); + }; + } + + function next(data) { + return function (evt) { + change(data, { index: data.index + 1, vector: 1 }); + }; + } + + function select(data, value) { + // Select page based on slide element index + var found = null; + if (value === data.slides.length) { + init(); layout(data); // Rebuild and find new slides + } + _.each(data.anchors, function (anchor, index) { + $(anchor.els).each(function (i, el) { + if ($(el).index() === value) found = index; + }); + }); + if (found != null) change(data, { index: found, immediate: true }); + } + + function startTimer(data) { + var config = data.config; + stopTimer(data); + config.timer = window.setTimeout(function () { + if (!config.autoplay || designer) return; + next(data)(); + startTimer(data); + }, config.delay); + } + + function stopTimer(data) { + var config = data.config; + window.clearTimeout(config.timer); + config.timer = null; + } + + function killTimer(data) { + var config = data.config; + config.autoplay = false; + stopTimer(data); + } + + function handler(data) { + return function (evt, options) { + options = options || {}; + + // Designer settings + if (designer && evt.type == 'setting') { + if (options.select == 'prev') return previous(data)(); + if (options.select == 'next') return next(data)(); + configure(data); + layout(data); + if (options.select == null) return; + select(data, options.select); + return; + } + + // Swipe event + if (evt.type == 'swipe') { + if (options.direction == 'left') return next(data)(); + if (options.direction == 'right') return previous(data)(); + return; + } + + // Page buttons + if (data.nav.has(evt.target).length) { + change(data, { index: $(evt.target).index() }); + } + }; + } + + function change(data, options) { + options = options || {}; + var config = data.config; + var anchors = data.anchors; + + // Set new index + data.previous = data.index; + var index = options.index; + var shift = {}; + if (index < 0) { + index = anchors.length-1; + if (config.infinite) { + // Shift first slide to the end + shift.x = -data.endX; + shift.from = 0; + shift.to = anchors[0].width; + } + } else if (index >= anchors.length) { + index = 0; + if (config.infinite) { + // Shift last slide to the start + shift.x = anchors[anchors.length-1].width; + shift.from = -anchors[anchors.length-1].x; + shift.to = shift.from - shift.x; + } + } + data.index = index; + + // Select page nav + var active = data.nav.children().eq(data.index).addClass('w-active'); + data.nav.children().not(active).removeClass('w-active'); + + // Hide arrows + if (config.hideArrows) { + data.index === anchors.length-1 ? data.right.hide() : data.right.show(); + data.index === 0 ? data.left.hide() : data.left.show(); + } + + // Get page offset from anchors + var lastOffsetX = data.offsetX || 0; + var offsetX = data.offsetX = -anchors[data.index].x; + var resetConfig = { x: offsetX, opacity: 1, visibility: '' }; + + // Transition slides + var targets = $(anchors[data.index].els); + var previous = $(anchors[data.previous] && anchors[data.previous].els); + var others = data.slides.not(targets); + var animation = config.animation; + var easing = config.easing; + var duration = Math.round(config.duration); + var vector = options.vector || (data.index > data.previous ? 1 : -1); + var fadeRule = 'opacity ' + duration + 'ms ' + easing; + var slideRule = 'transform ' + duration + 'ms ' + easing; + + // Trigger IX events + if (!designer && ix) { + targets.each(ix.intro); + others.each(ix.outro); + } + + // Set immediately after layout changes (but not during redraw) + if (options.immediate && !redraw) { + tram(targets).set(resetConfig); + resetOthers(); + return; + } + + // Exit early if index is unchanged + if (data.index == data.previous) return; + + // Cross Fade / Out-In + if (animation == 'cross') { + var reduced = Math.round(duration - duration * config.crossOver); + var wait = Math.round(duration - reduced); + fadeRule = 'opacity ' + reduced + 'ms ' + easing; + tram(previous) + .set({ visibility: '' }) + .add(fadeRule) + .start({ opacity: 0 }); + tram(targets) + .set({ visibility: '', x: offsetX, opacity: 0, zIndex: config.depth++ }) + .add(fadeRule) + .wait(wait) + .then({ opacity: 1 }) + .then(resetOthers); + return; + } + + // Fade Over + if (animation == 'fade') { + tram(previous) + .set({ visibility: '' }) + .stop(); + tram(targets) + .set({ visibility: '', x: offsetX, opacity: 0, zIndex: config.depth++ }) + .add(fadeRule) + .start({ opacity: 1 }) + .then(resetOthers); + return; + } + + // Slide Over + if (animation == 'over') { + resetConfig = { x: data.endX }; + tram(previous) + .set({ visibility: '' }) + .stop(); + tram(targets) + .set({ visibility: '', zIndex: config.depth++, x: offsetX + anchors[data.index].width * vector }) + .add(slideRule) + .start({ x: offsetX }) + .then(resetOthers); + return; + } + + // Slide - infinite scroll + if (config.infinite && shift.x) { + tram(data.slides.not(previous)) + .set({ visibility: '', x: shift.x }) + .add(slideRule) + .start({ x: offsetX }); + tram(previous) + .set({ visibility: '', x: shift.from }) + .add(slideRule) + .start({ x: shift.to }); + data.shifted = previous; + + } else { + if (config.infinite && data.shifted) { + tram(data.shifted).set({ visibility: '', x: lastOffsetX }); + data.shifted = null; + } + + // Slide - basic scroll + tram(data.slides) + .set({ visibility: '' }) + .add(slideRule) + .start({ x: offsetX }); + } + + // Helper to move others out of view + function resetOthers() { + var targets = $(anchors[data.index].els); + var others = data.slides.not(targets); + if (animation != 'slide') resetConfig.visibility = 'hidden'; + tram(others).set(resetConfig); + } + } + + function render(i, el) { + var data = $.data(el, namespace); + if (maskChanged(data)) return layout(data); + if (designer && slidesChanged(data)) layout(data); + } + + function layout(data) { + // Determine page count from width of slides + var pages = 1; + var offset = 0; + var anchor = 0; + var width = 0; + data.anchors = [{ els: [], x: 0, width: 0 }]; + data.slides.each(function (i, el) { + if (anchor - offset > data.maskWidth - data.config.edge) { + pages++; + offset += data.maskWidth; + // Store page anchor for transition + data.anchors[pages-1] = { els: [], x: anchor, width: 0 }; + } + // Set next anchor using current width + margin + width = $(el).outerWidth(true); + anchor += width; + data.anchors[pages-1].width += width; + data.anchors[pages-1].els.push(el); + }); + data.endX = anchor; + + // Build dots if nav exists and needs updating + if (designer) data.pages = null; + if (data.nav.length && data.pages !== pages){ + data.pages = pages; + buildNav(data); + } + + // Make sure index is still within range and call change handler + var index = data.index; + if (index >= pages) index = pages-1; + change(data, { immediate: true, index: index }); + } + + function buildNav(data) { + var dots = []; + var $dot; + var spacing = data.el.attr('data-nav-spacing'); + if (spacing) spacing = parseFloat(spacing) + 'px'; + for (var i=0; i= len(lines) { - return dunno - } - return bytes.TrimSpace(lines[n]) -} - -// function returns, if possible, the name of the function containing the PC. -func function(pc uintptr) []byte { - fn := runtime.FuncForPC(pc) - if fn == nil { - return dunno - } - name := []byte(fn.Name()) - // The name includes the path name to the package, which is unnecessary - // since the file name is already included. Plus, it has center dots. - // That is, we see - // runtime/debug.*T·ptrmethod - // and want - // *T.ptrmethod - // Also the package path might contains dot (e.g. code.google.com/...), - // so first eliminate the path prefix - if lastslash := bytes.LastIndex(name, slash); lastslash >= 0 { - name = name[lastslash+1:] - } - if period := bytes.Index(name, dot); period >= 0 { - name = name[period+1:] - } - name = bytes.Replace(name, centerDot, dot, -1) - return name -} - -// Recovery returns a middleware that recovers from any panics and writes a 500 if there was one. -// While Martini is in development mode, Recovery will also output the panic as HTML. -func Recovery() HandlerFunc { - return func(c *Context) { - defer func() { - if len(c.Errors) > 0 { - log.Println(c.Errors) - } - if err := recover(); err != nil { - stack := stack(3) - log.Printf("PANIC: %s\n%s", err, stack) - c.Writer.WriteHeader(http.StatusInternalServerError) - } - }() - - c.Next() - } -} diff --git a/validation.go b/validation.go deleted file mode 100644 index 610d10ac..00000000 --- a/validation.go +++ /dev/null @@ -1,56 +0,0 @@ -package gin - -import ( - "errors" - "reflect" - "strings" -) - -func (c *Context) ErrorRender() HandlerFunc { - return func(c *Context) { - defer func() { - if len(c.Errors) > 0 { - c.JSON(-1, c.Errors) - } - }() - c.Next() - } -} - -func Validate(c *Context, obj interface{}) error { - - var err error - typ := reflect.TypeOf(obj) - val := reflect.ValueOf(obj) - - if typ.Kind() == reflect.Ptr { - typ = typ.Elem() - val = val.Elem() - } - - for i := 0; i < typ.NumField(); i++ { - field := typ.Field(i) - fieldValue := val.Field(i).Interface() - zero := reflect.Zero(field.Type).Interface() - - // Validate nested and embedded structs (if pointer, only do so if not nil) - if field.Type.Kind() == reflect.Struct || - (field.Type.Kind() == reflect.Ptr && !reflect.DeepEqual(zero, fieldValue)) { - err = Validate(c, fieldValue) - } - - if strings.Index(field.Tag.Get("binding"), "required") > -1 { - if reflect.DeepEqual(zero, fieldValue) { - name := field.Name - if j := field.Tag.Get("json"); j != "" { - name = j - } else if f := field.Tag.Get("form"); f != "" { - name = f - } - err = errors.New("Required " + name) - c.Error(err, "json validation") - } - } - } - return err -}