Link to home
Start Free TrialLog in
Avatar of spectrumsofttech
spectrumsofttechFlag for India

asked on

How to delete products from shopping cart when user session ends (or Logout in ) in jsp web application

How to delete products from shopping cart when user session ends (or Logout in ) in jsp web application.When you then add a product to your cart (not logged in) and then decide to login and go to the checkout, I now have 2 products in the basket. Is there a way to not store products in the basket when you logout?

I know that this is a cookies issue, but is there a way to remove products from the cart when logging out?

Following is code what i have tried.




product.jsp
<link href="style.css" rel="stylesheet" type="text/css" media="all" /> 
<div class="cart"> 
						<form action="#" method="post" class="last"> 
							<input type="hidden" name="cmd" value="_cart" />
							<input type="hidden" name="display" value="0" />
							<button class="w3view-cart" type="submit" name="submit" value=""><i class="fa fa-cart-arrow-down" aria-hidden="true">cart</i></button>
						</form>  
					</div>
					
						<div class="item" style="width: 30%">
										<div class="glry-w3agile-grids agileits"> 
											<div class="new-tag"><h6>20% <br>Off</h6></div>
											<a href="products4.jsp"><img src="s3.jpg" alt="img"></a>
											<div class="view-caption agileits-w3layouts">           
												<h4><a href="products4.jsp">Nylon Shuttle</a></h4>
												<p>Lorem ipsum dolor sit amet consectetur</p>
												<h5>$56</h5>
												<form action="#" method="post">
													<input type="hidden" name="cmd" value="_cart" />
													<input type="hidden" name="add" value="1" /> 
													<input type="hidden" name="w3ls_item" value="Nylon Shuttle" /> 
													<input type="hidden" name="amount" value="56.00"/> 
													<button type="submit" class="w3ls-cart" ><i class="fa fa-cart-plus" aria-hidden="true"></i> Add to cart</button>
												</form>
											</div>       
										</div> 
									</div>
					
					<script src="cart.js"></script>
	
	<script>
        w3ls.render();

        w3ls.cart.on('w3sb_checkout', function (evt) {
        	alert("in")
        	var items, len, i;

        	if (this.subtotal() > 0) {
        		items = this.items();

        		for (i = 0, len = items.length; i < len; i++) {
        			items[i].set('shipping', 0);
        			items[i].set('shipping2', 0);
        		}
        	}
        });
    </script>  

Open in new window

   
      style.css

/*--
Author: W3layouts
Author URL: http://w3layouts.com
License: Creative Commons Attribution 3.0 Unported
License URL: http://creativecommons.org/licenses/by/3.0/
--*/
body{
	margin:0; 
	font-family: 'Roboto Condensed', sans-serif;
	background: #fff;
}
body a{ 
	-webkit-transition: 0.5s all;
	-moz-transition: 0.5s all;
	-o-transition: 0.5s all;
	-ms-transition: 0.5s all;
	transition: 0.5s all;
	text-decoration:none;
}
h1,h2,h3,h4,h5,h6{
	margin:0;	  
}
p{
	margin:0;
}
ul,label{
	margin:0;
	padding:0;
}
body a:hover{
	text-decoration:none;
}
#k{
	margin-left:2%;
	margin-right:2%}
#ppp{
	margin-left:32%;}
#ttt{
	margin-left:2%;
	margin-right:2%}


 
  
/*-- header --*/
.w3ls-header {
    background: #464646;
    padding: 0.5em 2em;
} 
.w3ls-header-left {
    float: left;
}
.w3ls-header-right {
    float: right;
}
.w3ls-header-left p {
    font-size: 0.9em; 
}
.w3ls-header-left p a{ 
    color: #fff;
}
.w3ls-header-right ul li.dropdown {
    display: inline-block;
    padding: 0 1em; 
} 
ul.dropdown-menu {
    -moz-animation: fadeInUp .2s ease-in;
    -webkit-animation: fadeInUp .2s ease-in; 
    animation: fadeInUp .2s ease-in;
	min-width: 120px; 
    font-size: 1em;
	top: 125%;
	z-index: 99999;
}
ul.cd-dropdown-content li {
    display: block;
}
.w3ls-header-right ul li a.dropdown-toggle {
    font-size: 0.9em;
    color: #f9f9f9;
	outline:none;
}
.w3ls-header-right ul li a.dropdown-toggle:hover,li.dropdown.head-dpdn.open a.dropdown-toggle,.my-account a:hover,.my-account a:hover i.fa{
    color: #fd776d;
	text-decoration:none;
} 
.w3ls-header-right ul li a i.fa {
    margin-right: 5px;
}
.w3ls-header-right ul li .caret { 
    margin-left: 6px; 
}
.dropdown-menu > li > a { 
    color: #999; 
}
.dropdown-menu > li > a:hover {
    color: #fff;
    background: #3988d1;
}
/*-- //header --*/ 
/*-- header-two --*/
.header-two.scroll-to-fixed-fixed {
    background: #fff;
    padding: .3em 0 0.8em;
	-webkit-box-shadow: 0px 0px 5px 1px #d2d2d2;
	-moz-box-shadow: 0px 0px 5px 1px #d2d2d2;
	-o-box-shadow: 0px 0px 5px 1px #d2d2d2;
	-ms-box-shadow: 0px 0px 5px 1px #d2d2d2;
    box-shadow: 0px 0px 5px 1px #d2d2d2;
    z-index: 999;
}
.header-two.scroll-to-fixed-fixed .header-logo h1 {
    font-size: 2.5em;
}
.header-two.scroll-to-fixed-fixed .header-search {
    margin-top: 1.8em;
    margin-bottom: 1em;
}
.header-two.scroll-to-fixed-fixed .header-search input[type="search"] { 
    padding: 0.8em 5em 0.8em 1em; 
}
.header-two.scroll-to-fixed-fixed .header-search .btn-default { 
    height: 44px; 
}
.header-two.scroll-to-fixed-fixed .header-cart { 
    margin: 1.1em 0 0;
}
.header-two {
    padding: 2em 0; 
	position: relative;
}
.header-logo {
    float: left; 
}
.header-search {
    float: left;
    width: 55%;
    text-align: center;
    margin: 1.6em 5em;
}
.header-cart {
    float: right;
	margin: 1.3em 0;
}  
.header-logo h1,.footer-logo.header-logo h2{
    font-size: 3em; 
    font-weight: 900;
}
.header-logo h1 a ,.footer-logo.header-logo h2 a{
    display: inline-block;
    color: #000;
    text-decoration: none;
    position: relative;
}
.header-logo h1 a span,.footer-logo.header-logo h2 a span{
    font-family: 'Lovers Quarrel', cursive;
    font-size: 2em;
    color:#F44336;
    vertical-align: sub;
	margin-right: 3px;
}
.header-logo h1 a i,.footer-logo.header-logo h2 a i{
    display: block;
    position: absolute;
    bottom: 18%;
    right: 2%;
    font-size: 0.5em; 
} 
.header-logo h6 {
    font-size: 0.8em;
    color: #000;
    letter-spacing: 1px;
    margin-top: -1em;
}  
.header-search form {
    position: relative;
}
.header-search input[type="search"] {
    width: 100%;
    padding: 1em 5em 1em 1em;
    font-size: 1em;
    color: #999;
    outline: none;
    border: 1px solid #cccccc;
    background: none;
    -webkit-appearance: none;
    transition: 0.5s all;
    -webkit-transition: 0.5s all;
    -moz-transition: 0.5s all;
}
.header-search input[type="search"]:focus {
    border-color: #f44336;
}
.header-search .btn-default {
    border: none;
    position: absolute;
    top: 0px;
    right: 0px;
    width: 60px;
    height: 50px;
    outline: none;
    box-shadow: none;
    background: #f44336;
    padding: 0;
    border-radius: inherit;
    -webkit-appearance: none;
    -webkit-transition: .5s all;
    -moz-transition: .5s all;
    transition: .5s all;
}
.header-search i.fa {
    font-size: 1em;
    color: #fff;
    padding: 3px;
} 
.header-cart h4 a {
    color: #000;
}
/*-- cart-box --*/ 
.cart {
    margin-right: 2em;
    padding-right: 2em;
    border-right: 1px solid #6495ed;
    float: left;
} 
.w3view-cart {
    background: #0280e1;
    border: none;
	-webkit-border-radius: 50%;
	-moz-border-radius: 50%;
	-o-border-radius: 50%;
	-ms-border-radius: 50%;
    border-radius: 50%;
    width: 60px;
    height: 59px;
    text-align: center;
    outline: none;
}
.w3view-cart  i.fa {
    font-size: 2em;
    color: #ffffff;
	vertical-align: middle;
}
/*-- //cart-box --*/
.my-account {
    float: right;
    margin: 1.4em 0;
} 
.my-account a {
    font-size: 1em;
    color: #000;
	-webkit-transition: 0.5s all;
    -moz-transition: 0.5s all;
    -o-transition: 0.5s all;
    -ms-transition: 0.5s all;
	transition: 0.5s all;
}
.my-account a i.fa{
    color: #cccccc;
    margin-right: 3px; 
    -webkit-transition: 0.5s all;
    -moz-transition: 0.5s all;
    -o-transition: 0.5s all;
    -ms-transition: 0.5s all;
	transition: 0.5s all;
}
/*-- //header-two --*/
/*-- header-three --*/ 
.header-three {
    border-bottom: 1px solid #eaeaea; 
    background: url(../images/bg.png)#08bce4 no-repeat;
    background-size: cover;  
}
/*-- //header-three --*/
.menu {
    float: left;
    width: 21%;
}
.move-text {
    float: right;
    width: 70%;
    padding: 1em; 
}
.marquee {
    width: 100%;
    margin: 0 auto;
    font-size: 1em;
    overflow: hidden;
}
.marquee a {
    color: #fff;
    letter-spacing: 1px;
	text-transform: capitalize;
	font-size:1em;
}
.marquee a span {
    margin-left: 18em;
}
/*-- menu --*/
.cd-dropdown-trigger:hover {
    color: #000;
}
/*-- //menu --*/
/*-- welcome --*/
.welcome,.deals,.card-page,.help,.values,.privacy,.sitemap,.products,.related-products,.login-page,.contact,.about,.faq-w3agile,.wthree-offers,.w3l-services{
	padding:5em 0;
} 
h3.w3ls-title {
    text-align: left;
    font-size: 2em;
    color: #000;
    margin: 1em 0;
    font-family: 'Offside', cursive;
}
.welcome-grids {
    float: left;
    width: 33.33%;
    text-align: center;
    margin: 0.7em 0;
}
.welcome-info {
    text-align: center;
}
.welcome .bs-example.bs-example-tabs .nav-tabs {
    border: none;
    margin: 2em 0 1em; 
}
.welcome .bs-example-tabs ul.nav-tabs li {
    display: inline-block;
    float: none;
	margin: 0 3em;
} 
.welcome .bs-example-tabs ul.nav-tabs li a {
    display: block; 
    outline: none;
    border: none;
	margin: 0;
}
.welcome .bs-example-tabs ul.nav-tabs li a:focus{
	text-decoration: none;
} 
.welcome .tabcontent-grids ul li {
    display: block;
    color: #999;
    margin-top: 1em;
	font-size: 1em;
}
.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { 
    background-color: transparent;  
}
.nav-tabs li a i.fa {
    font-size: 5em;
    color: #78d378;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
}
.nav-tabs li a i.fa.fa-female {
    color: #f57df5;
}
.nav-tabs li a i.fa.fa-gift{
	color: #fd723e;
}
.nav-tabs li a i.fa.fa-home{
	color: #5b91f2;
}
.nav-tabs li a i.fa.fa-motorcycle{
	color: #ec4b81;
} 
.nav-tabs li a h5 {
    font-size: 1.2em;
    color: #555;
    margin-top: 1em;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
}
.welcome ul.nav-tabs li.active a i.fa,.welcome ul.nav-tabs li:hover a i.fa{
    color: #d2d2d2;
}
.welcome ul.nav-tabs li.active a  h5,.welcome ul.nav-tabs li:hover a  h5{
    color: #d2d2d2;
}

.owl-carousel .item {
    margin: 1em;
    color: #FFF;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
    text-align: center;
	-webkit-box-shadow: 0px 0px 14px rgba(0, 0, 0, 0.33);
	-moz-box-shadow: 0px 0px 14px rgba(0, 0, 0, 0.33);
	-o-box-shadow: 0px 0px 14px rgba(0, 0, 0, 0.33);
	-ms-box-shadow: 0px 0px 14px rgba(0, 0, 0, 0.33);
    box-shadow: 0px 0px 14px rgba(0, 0, 0, 0.33);
}
/*-- featured products --*/
/*  Demo 10 */
.glry-w3agile-grids {
	background-color: #FFF;
	display: block; 
	overflow: hidden;
	position: relative;
	-webkit-box-shadow: 0 0 0 0 #555;
	-moz-box-shadow: 0 0 0 0 #555;
	-o-box-shadow: 0 0 0 0 #555;
	-ms-box-shadow: 0 0 0 0 #555;
	box-shadow: 0 0 0 0 #555;
	-webkit-transition: all 0.5s;
	-moz-transition: all 0.5s;
	-ms-transition: all 0.5s;
	-o-transition: all 0.5s;
	transition: all 0.5s;
	opacity: 1;
	filter: alpha(opacity=100);
}
.glry-w3agile-grids a {
    display: block;
}
.glry-w3agile-grids img {
    width: 70%;
    margin: 2em auto;
    -webkit-transition: all 0.5s;
    -moz-transition: all 0.5s;
    -ms-transition: all 0.5s;
    -o-transition: all 0.5s;
    transition: all 0.5s;
    opacity: 1;
    filter: alpha(opacity=100);
}
.glry-w3agile-grids:hover img {
	-webkit-transform: translateX(50%);
	-moz-transform: translateX(50%);
	-o-transform: translateX(50%);
	-ms-transform: translateX(50%);
	transform: translateX(50%);
	opacity: 1;
	filter: alpha(opacity=100);
}
.glry-w3agile-grids:hover .view-caption {
	-webkit-transform: translate3d(-30%, 0px, 0px);
	-moz-transform: translate3d(-30%, 0px, 0px);
	-o-transform: translate3d(-30%, 0px, 0px);
	-ms-transform: translate3d(-30%, 0px, 0px);
	transform: translate3d(-30%, 0px, 0px);
}
.glry-w3agile-grids .view-caption {
	background-color: rgba(0, 0, 0, 0.85);
	bottom: 0;
	left: 0;
	position: absolute;
	right: 0;
	padding: 7% 5% 5% 35%;
	text-align: left;
	top: 0;
	z-index: 99;
	-webkit-transition: all 0.5s;
	-moz-transition: all 0.5s;
	-ms-transition: all 0.5s;
	-o-transition: all 0.5s;
	transition: all 0.5s;
	-webkit-transform: translate3d(-110%, 0px, 0px);
	-moz-transform: translate3d(-110%, 0px, 0px);
	-o-transform: translate3d(-110%, 0px, 0px);
	-ms-transform: translate3d(-110%, 0px, 0px);
	transform: translate3d(-110%, 0px, 0px);
}
.glry-w3agile-grids .view-caption h4 {
    border-bottom: 1px solid #ccc;
    font-size: 1.2em;
    font-weight: normal;
    margin-bottom: 10px;
    padding-bottom: 10px;
    font-family: 'Offside', cursive;
	font-weight: 600;
	text-transform: capitalize;
}
.glry-w3agile-grids .view-caption h4 a {
    color: #f44336; 
}
.glry-w3agile-grids .view-caption p {
    font-size: 1em;
    color: #999;
    line-height: 1.8em;
}
.glry-w3agile-grids .view-caption h5 {
    font-size: 1.5em;
    color: #fff;
    background: #3075f1;
    width: 60px;
    height: 60px;
    line-height: 2.9em;
	-webkit-border-radius: 62%;
	-moz-border-radius: 62%;
	-o-border-radius: 62%;
	-ms-border-radius: 62%;
    border-radius: 62%;
    text-align: center;
    margin: 1em auto;
} 
.agileits-form{
    position: relative;
    text-align: center;
}
.w3ls-cart {
    display: block;
    background: #f44336;
    color: #fff;
    font-size: 1em;
    text-align: center;
    border-radius: 3px;
    border: 1px solid;
    width: 80%;
    outline: none;
    padding: .5em 0;
    margin: 0 auto;
}
.w3ls-cart i.fa{
    margin-right: 6px;
} 
/*-- //welcome --*/
/*-- add-products --*/
.w3ls-add-grids {
    background: url(../images/img1.jpg)no-repeat 0px 0px;
    background-size: cover;
	width: 32.5%;
	min-height: 250px;
	float:left;
}
.w3ls-add-grids.w3ls-add-grids-mdl{
    background: url(../images/img2.jpg)no-repeat 0px 0px; 
	background-size: cover;
}
.w3ls-add-grids.w3ls-add-grids-mdl1{
    background: url(../images/img3.jpg)no-repeat 0px 0px; 
	background-size: cover;
}
.w3ls-add-grids.w3ls-add-grids-mdl {
    margin: 0 1em;
} 
.w3ls-add-grids a {
    display: block;
    padding: 1em;
}
.w3ls-add-grids h4 {
    font-size: 1.8em;
    color: #fff;
    letter-spacing: 2px;
    padding-top: 3em;
	outline:none;
	text-decoration:none;
	line-height: 1.5em;
}
.w3ls-add-grids h4 span {
    font-family: 'Lovers Quarrel', cursive;
    font-size: 2em;
}
.w3ls-add-grids a {
    display: block;
}
.w3ls-add-grids h6 {
    font-size: 1.2em;
    color: #f32e20;
    margin: 1.65em 0;
    font-family: 'Offside', cursive;
}
.w3ls-add-grids.w3ls-add-grids-mdl h4 {
    padding-top: 2em;
    text-align: center;
}
.w3ls-add-grids.w3ls-add-grids-mdl h6 {
    text-align: center;
    color: #fff;
	margin: 2.4em 0;
}
/*-- //add-products --*/
/*-- deals --*/
.focus-grid a {
    color: #6495ed;
    text-align: center;
    padding: 2em 0;
} 
.focus-grid a.wthree-btn.wthree1 {
    color: #ff4500;
}
.focus-grid a.wthree-btn.wthree2 {
    color: #00b300;
}
.focus-grid a.wthree-btn.wthree3 {
    color: #E91E63;
}
.focus-grid a.wthree-btn.wthree4 {
    color: #a94442;
}
.focus-grid a.wthree-btn.wthree5 {
    color: #f15cf1;
}
.wthree-btn { 
	position: relative;
	display: block;
	margin: 1em auto;
	width: 100%; 
	text-transform: uppercase;
	overflow: hidden;
	border: 1px solid; 
} 
.focus-image i.fa {
    font-size: 3em; 
}
h4.clrchg {
    font-size: 1.1em;
    margin-top: 1em;
} 
/*-- deals-effect --*/
@-webkit-keyframes criss-cross-left {
  0% {
    left: -20px;
  }
  50% {
    left: 50%;
    width: 20px;
    height: 20px;
  }
  100% {
    left: 50%;
    width: 375px;
    height: 375px;
  }
}

@keyframes criss-cross-left {
  0% {
    left: -20px;
  }
  50% {
    left: 50%;
    width: 20px;
    height: 20px;
  }
  100% {
    left: 50%;
    width: 375px;
    height: 375px;
  }
}
@-webkit-keyframes criss-cross-right {
  0% {
    right: -20px;
  }
  50% {
    right: 50%;
    width: 20px;
    height: 20px;
  }
  100% {
    right: 50%;
    width: 375px;
    height: 375px;
  }
}
@keyframes criss-cross-right {
  0% {
    right: -20px;
  }
  50% {
    right: 50%;
    width: 20px;
    height: 20px;
  }
  100% {
    right: 50%;
    width: 375px;
    height: 375px;
  }
}
 
.wthree-btn:before, .wthree-btn:after {
	position: absolute;
	top: 50%;
	content: '';
	width: 20px;
	height: 20px;
	background: #56259b;
	-webkit-border-radius: 50%;
	-moz-border-radius: 50%;
	-o-border-radius: 50%;
	-ms-border-radius: 50%;
	border-radius: 50%;
	z-index: -1;
	transition:.5s all;
}
.wthree-btn:before {
	left: -20px;
	-webkit-transform: translate(-50%, -50%);
	-moz-transform: translate(-50%, -50%);
	-o-transform: translate(-50%, -50%);
	-ms-transform: translate(-50%, -50%);
	transform: translate(-50%, -50%); 
}
.wthree-btn:after {
	right: -20px;
	-webkit-transform: translate(50%, -50%);
	-moz-transform: translate(50%, -50%);
	-o-transform: translate(50%, -50%);
	-ms-transform: translate(50%, -50%);
    transform: translate(50%, -50%); 
}
.wthree-btn:hover {
	color: #f5f5f5 !important;
}
.wthree-btn:hover:before {
	-webkit-animation: criss-cross-left 0.8s both;
	-moz-animation: criss-cross-left 0.8s both;
	-o-animation: criss-cross-left 0.8s both;
	-ms-animation: criss-cross-left 0.8s both;
	animation: criss-cross-left 0.8s both;
}
.wthree-btn:hover:after {
	-webkit-animation: criss-cross-right 0.8s both;
	-moz-animation: criss-cross-right 0.8s both;
	-o-animation: criss-cross-right 0.8s both;
	-ms-animation: criss-cross-right 0.8s both;
    animation: criss-cross-right 0.8s both;
} 
/*-- //deals-effect --*/
/*-- //deals --*/
/*-- footer-top --*/ 
p {
    font-size: 1em;
    color: #999;
    line-height: 1.8em;
}
.w3agile-ftr-top {
    padding: 4em 0;
    background: url(../images/bg1.jpg)no-repeat center 0px;
	background-size: cover; 
}
.ftr-top-left {
    float: left; 
}
.ftr-top-right{
    float: right;
    width: 72%;
}
.ftr-top-left i.fa {
    font-size: 2.5em;
    border: 1px solid; 
    color: #176aff;
    width: 70px;
    height: 70px;
    text-align: center;
    line-height: 2;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
	-webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    -o-border-radius: 50%;
    -ms-border-radius: 50%;
    border-radius: 50%;
}
.ftr-top-left i.fa.fa-user{
	color: #00c57e;
}
.ftr-top-left i.fa.fa-thumbs-o-up{
	color: #fb4602;
}
.ftr-top-right h4 {
    font-size: 1.4em;
    font-family: 'Offside', cursive;
    margin-bottom: 0.5em;
    color: #fff;
}
.ftr-top-grids:hover i.fa {
    color: #fff;
}
/*-- //footer-top --*/ 
/*-- coming soon --*/ 
.soon{
    margin-top: 5em;
	padding:5em 0;
    background: url(../images/bg2.jpg)no-repeat center 0px;
	text-align: center;
	background-size: cover;
}
.soon h3 {
    color: #fff; 
    font-size: 3em;
    font-family: 'Offside', cursive;
}
.soon h4 {
    font-size: 2em;
    margin: 1em 0 2em;
    color: #00b300;
    font-family: 'Tangerine', cursive;
    background: rgba(0, 0, 0, 0.75);
    display: inline-block;
    padding: .5em 1em;
}
.ClassyCountdown-wrapper > div {
    display: inline-block;
    position: relative;
    width: 21%;
    margin: 0 2%;
    height: inherit !important;
}
.ClassyCountdown-wrapper .ClassyCountdown-value {
    width: 100%;
    line-height: 1em;
    position: absolute;
    top: 50%;
    text-align: center;
    left: 0;
    display: block;
}
.ClassyCountdownDemo {
    width: 60%;
    margin: 0 auto;
	text-align: center;
} 
.soon  canvas { 
    background: rgba(9, 9, 9, 0.48);
	-webkit-border-radius: 50%;
	-moz-border-radius: 50%;
	-o-border-radius: 50%;
	-ms-border-radius: 50%;
    border-radius: 50%;
}
/*-- //coming soon --*/ 
/*-- subscribe --*/ 
.subscribe{
	padding:3em 0;
}
.subscribe-right {
    margin-top: 1.5em;
}
.subscribe h4 {
    font-size: 1.3em;
    color: #000;
    margin-bottom: 1em;
    font-family: 'Offside', cursive;
} 
.subscribe input[type="text"] {
    width: 70%;
    padding: 1em;
    font-size: 1em;
    float: left;
    color: #999;
    outline: none;
    border: 1px solid #999;
    border-right: none;
    background: none;
    -webkit-appearance: none; 
    -webkit-transition: 0.5s all;
    -moz-transition: 0.5s all;
	transition: 0.5s all;
}
.subscribe input[type="submit"] {
    float: left;
    color: #999;
    font-size: 1em;
    outline: none;
    padding: 1em 1.8em;
    border: 1px solid #999; 
    -webkit-transition: 0.5s all;
    -moz-transition: 0.5s all;
	transition: 0.5s all;
    -webkit-appearance: none;
    background: none;
}
.subscribe form:hover input[type="text"]{
    border-color: #f44336;
}
.subscribe form:hover input[type="submit"] {
    border-color: #f44336;
    background: #f44336;
	color:#fff;
}
/*-- //subscribe --*/
/*-- social-icons --*/  
.social-icons ul li {
    display: inline-block;
}
.social-icons ul li a.fa.icon{
    font-size: 1em;
    color: #fff;
    line-height: 2.3em;
    text-align: center;
	border:2px solid #3b5998;
	-webkit-border-radius: 50%;
	-moz-border-radius: 50%;
	-o-border-radius: 50%;
	-ms-border-radius: 50%; 
	border-radius: 50%;
	background: #3b5998;
}  
.social-icons ul li a.fa.icon:hover {
    color: #3b5998;
    background: transparent;
}
.social-icons ul li a.fa.fa-twitter{
    background: #4099ff; 
	border-color:#4099ff;
}
.social-icons ul li a.fa.fa-twitter:hover {
    color: #4099ff; 
	background: transparent;
}
.social-icons ul li a.fa.fa-google-plus{
    background: #d34836;
	border-color:#d34836;
}
.social-icons ul li a.fa.fa-google-plus:hover {
    color: #d34836;
	background: transparent;
}
.social-icons ul li a.fa.fa-dribbble{
    background: #ec4a89;
	border-color:#ec4a89;
}
.social-icons ul li a.fa.fa-dribbble:hover {
    color: #ec4a89;
	background: transparent;
}
.social-icons ul li a.fa.fa-rss{
    background: #ee802f;
	border-color:#ee802f;
} 
.social-icons ul li a.fa.fa-rss:hover {
    color: #ee802f;
	background: transparent;
} 
.icon {
    vertical-align: top;
    overflow: hidden;
    margin: 4px;
    width: 35px;
    height: 35px;
	position: relative;
}
 
.social-icons  ul.apps {
    margin-top: 1em;
}
.social-icons ul.apps li h4 {
    font-size: 1em;
	margin: 0;
}
.social-icons ul.apps li a.fa {
    color: #999;
    font-size: 1.4em;
    margin-left: 0.6em;
}
.social-icons ul.apps li a.fa:hover {
    color: #0280e1;
}
/*-- //social-icons --*/ 
/*-- footer --*/
.footer {
    padding-top: 5em;
    background: url(../images/bg.png)#42d406 no-repeat;
    background-size: cover;
}
.footer-logo.header-logo {
    float: none;
    text-align: center;
}
.address-left {
    background: #fff;
    padding: 2em;
    z-index: 9;
}
.address-right{
	position:relative;	
}
.address-right:before {
    content: '';
    background: url(../images/a1.png)no-repeat 0px 0px;
    background-size: 100%;
    display: block;
    position: absolute;
    bottom: -189px;
    left: -36px;
    width: 500px;
    height: 155px;
    z-index: 0;
}
.address-left ul li {
    display: block;
    margin: 1em 0;
    font-size: 1em;
    color: #555;
    border-top: 1px solid #e6e2e2;
    padding-top: 1em;
    text-align: center;
}
.address-left ul li a{ 
    color: #000;
}
.address-left ul li a:hover {
    color: #3c9de8;
}
.address-left ul li i.fa {
    margin-right: 5px;
    font-size: 1.3em;
}
.footer h3 {
    font-size: 1.4em;
    color: #f5f5f5;
    font-family: 'Offside', cursive;
    margin-bottom: 1em;
    text-transform: uppercase;
} 
.footer-grids ul li {
    display: block;
    font-size: 1em;
    margin:	0.6em 0 0;
    color: #05b2da;
}
.footer-grids ul li i.fa {
    margin-right: 7px;
}
.footer-grids ul li a{ 
	color:#fff;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
}
.footer-grids ul li a:hover {
    color: #000;
}
.copy-right {
    text-align: center;
    padding: 2em 0;
    background: #222;
}
.copy-right p {
    font-size: 1em;
    color: #fff;
    font-weight: 300;
	line-height:1.8em;
}
.copy-right p a{
    color: #fff;
}
.copy-right p a:hover{
    color: #f44336;
}
/*-- //footer --*/
/*-- slider-up-arrow --*/
#toTop {
	display: none;
	text-decoration: none;
	position: fixed;
	bottom: 3%;
	right: 3%;
	overflow: hidden;
	width: 32px;
	height: 32px;
	border: none;
	text-indent: 100%;
	background: url("../images/move-up.png") no-repeat 0px 0px;
	z-index:999;
}
#toTopHover {
	width: 32px;
	height: 32px;
	display: block;
	overflow: hidden;
	float: right;
	opacity: 0;
	-moz-opacity: 0;
	filter: alpha(opacity=0);
}
/*-- //slider-up-arrow --*/  
/*-- products-page --*/ 
.new-tag:before {
    content: '';
    width: 0;
    height: 0;
    border-top: 60px solid #0280e1;
    border-right: 60px solid transparent;
    position: absolute;
    top: 0;
    left: 0;
	-webkit-transition: .5s all;
	-moz-transition: .5s all;
	-o-transition: .5s all;
	-ms-transition: .5s all;
	transition: .5s all;
}
.new-tag h6 {
    color: #fff;
    z-index: 1;
    position: absolute;
    top: 3%;
    left: 4%;
    font-size: .9em;
}
.glry-w3agile-grids .new-tag h6 {
    text-align: left;
    left: 3%;
}
.agile-products:hover .new-tag:before {
    border-top-color: #f44336;
}
/*-- products-right --*/
.product-w3ls-right {
    float: right;
    padding: 0;
}
.breadcrumb.breadcrumb1  > li { 
    font-size: 1.1em;
    font-weight: 300;
}
.breadcrumb.breadcrumb1 li a {
    color: #0280e1;
} 
.breadcrumb.breadcrumb1  > .active,.breadcrumb.breadcrumb1 li a:hover{
    color: #000;
}
.breadcrumb.breadcrumb1 > li + li:before {
    content: "\f101";
    font: normal normal normal 14px/1 FontAwesome;
    color: #464646;
    padding: 0 8px;
}
.product-top {
    background: #464646;
    padding: 1em 2em;
}
.product-top li.dropdown{
    display: inline-block;
    float: right;
	margin-left: 2em;
} 
.product-top h4 {
    font-size: 1.3em;
    color: #fff;
    font-family: 'Offside', cursive;
    float: left;
}
.product-top ul li a.dropdown-toggle {
    color: #fff;
	padding: 1.2em 0;
}
.product-top ul li a span.caret {
    margin-left: 8px;
}
.product-top ul.dropdown-menu {
    margin-top: 11px;
    border-color: #bbb;
} 
.product-grids {
    margin-top: 3em;
}
.agile-products {
    padding: 1.5em;
    border: 1px solid #e4e4e4;
	position: relative;
    overflow: hidden;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
}
.agile-product-text h5{ 
    font-size: 1em;
    line-height: 1.8em;
    font-family: 'Offside', cursive;
	margin-top: 1em;
    text-transform: capitalize;
}
.agile-product-text h5 a {
    color: #0280e1; 
}
.agile-product-text h5 a:hover ,.related-row h4 a:hover{
    color: #000;
}
.agile-product-text h6 {
    margin: 0.5em 0 0;
    font-size: 1em;
    color: #333;
}
.agile-product-text h6 del {
    color: #999;
    margin-right: 0.5em;
}
.w3ls-cart.pw3ls-cart {
    position: absolute;
    width: 75%;
    bottom: -50%;
	-webkit-transition: .6s all;
	-moz-transition: .6s all;
	-o-transition: .6s all;
    transition: .6s all;
    font-size: 1em;
    padding: .8em 0;
    background: rgba(244, 67, 54, 0.87); 
}
.w3ls-cart.pw3ls-cart  i.fa {
    margin-right: 5px;
}
.agile-products:hover  .w3ls-cart.pw3ls-cart{
	bottom: 35%;
}
.agile-products:hover {
    border-color: #f44336;
}
.w3ls-add-grids.w3agile-add-products {
    float: none;
    width: 100%;
    margin: 2em 0 1em;
    text-align: center;
}
.w3ls-add-grids.w3agile-add-products a h6 {
    color: #fff;
}
/*-- galry-like --*/
.galry-like{
    text-align: center;
}
.galry-like a {
    display: block;
	overflow: hidden;
}
.galry-like a img {
	-webkit-transition:.5s all; 
	-moz-transition:.5s all; 
	-o-transition:.5s all; 
	-ms-transition:.5s all; 
	transition:.5s all; 
}
.galry-like:hover img { 
	-webkit-transform: scale(1.1);
	-moz-transform: scale(1.1);
	-o-transform: scale(1.1);
	-ms-transform: scale(1.1);
    transform: scale(1.1);
}
/*-- //galry-like --*/
/*-- //products-right --*/ 
/*-- products-left --*/ 
.rsidebar {
    display: block;
    float: left;
    width: 22%;
	padding:0;
}
.rsidebar-top{
    border: 1px solid #cccccc;
    padding: 2em;
} 
input.item_quantity {
    background: none;
    border: 1px solid #fff;
    padding: 0.8em 1em;
    width: 100%;
    text-align: center;
    font-size: 1em;
	outline: none;
    color: #fff;
}
input.item_quantity:hover{
	border-color: #000;
}
/*-- side-bar --*/
.sidebar-row {
    margin-top: 2em;
}
.rsidebar h4,.related-row h4 {
    font-size: 1.1em;
    color: #f44336;
    text-transform: uppercase;
    margin-bottom: 1em;
    font-family: 'Offside', cursive;
}
.checkbox {
    position: relative;
    padding-left:27px !important;
    cursor: pointer;
    line-height: initial;
    font-size: 1em;
    color: #353F49;
    font-weight: 500;
    margin: 0 0 1.5em;
}
.checkbox i {
    position: absolute;
    bottom: 0;
    left: 0;
    display: block;
    width: 19px;
    height: 19px;
    outline: none;
    border: 2px solid #D8D8D8;
    background: #FFF;
}
.checkbox input + i:after,.radio input + i:after {
    position: absolute;
    opacity: 0;
    transition: opacity 0.1s;
    -o-transition: opacity 0.1s;
    -ms-transition: opacity 0.1s;
    -moz-transition: opacity 0.1s;
    -webkit-transition: opacity 0.1s;
}
.checkbox input:checked + i:after,.radio input:checked + i:after{
    opacity: 1;
}
.checkbox input,.radio input {
    position: absolute;
    left: -9999px;
}
.checkbox input + i:after {
    content: '';
    background: url("../images/tick.png") no-repeat 4px 3px;
    top: -1px;
    left: -1px;
    width: 17px;
    height: 17px;
    font: normal 12px/16px FontAwesome;
    text-align: center;
}
/*-- start scrollpane --*/
.sidebar-row .faq li a {
    color: #353F49;
}
.scroll-pane.jspScrollable {
    outline: none;
}
.jspContainer{
	overflow: hidden;
	position: relative;
}
.jspPane{
	position: absolute;
	outline: none;
	padding:5px 20px 20px 10px !important;
}
.jspVerticalBar{
	position: absolute;
	top: 0;
	right:0px;
	width:3px;
	height: 100%;
}
.jspHorizontalBar{
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 16px;
	background: red;
}
.jspCap{
	display: none;
}
.jspHorizontalBar .jspCap{
	float: left;
}
.jspTrack{
	background: #B9B7B7;
	position: relative;
}
.jspDrag{
	background: #0280e1;
	position: relative;
	top: 0;
	left: 0;
	cursor: pointer;
}
.jspHorizontalBar .jspTrack,.jspHorizontalBar .jspDrag{
	float: left;
	height: 100%;
}
.jspArrow{
	background: #50506d;
	text-indent: -20000px;
	display: block;
	cursor: pointer;
	padding: 0;
	margin: 0;
}
.jspArrow.jspDisabled{
	cursor: default;
	background: #80808d;
}
.jspVerticalBar .jspArrow{
	height: 16px;
}
.jspHorizontalBar .jspArrow{
	width: 16px;
	float: left;
	height: 100%;
}
.jspVerticalBar .jspArrow:focus{
	outline: none;
}
.jspCorner{
	background: #eeeef4;
	float: left;
	height: 100%;
}
.scroll-pane {
    height: 160px;
}
input#amount {
    outline: none;
}
/*-- faq --*/
.sidebar-row .faq li {
    margin-top: 0.8em;
    display: block;
}
.faq > li > a {
    width: 100%;
    display: block;
    position: relative;
    color: #fff;
    font-size: 1em;
    font-weight: 400;
    text-decoration: none;
}
.faq > li > a:hover,.faq > li >a.active{
	color: #000;
}
.faq li a.active span {
	-webkit-transform: rotatex(180deg);
	transform: rotatex(180deg);
	-moz-transform: rotatex(180deg);
	-o-transform: rotatex(180deg);
	-ms-transform: rotatex(180deg);
}
.faq ul li a {
    line-height: 1.8em;
    display: block;
    position: relative;
    font-size: 1em;
    color: #999;
    text-decoration: none;
	font-weight: 400;
    padding-left: 1.5em;
}
.faq ul li a:hover{
    color: #ff590f;
}
.faq span.glyphicon {
    float: right;
}
/*-- //faq --*/ 
.related-row {
    border: 1px solid #ccc;
    padding: 1.2em;
    margin-top: 1em;
}
.related-row ul li{
    display:inline-block;
}
.related-row ul li a {
    border: 1px solid #ccc;
    padding: 2px 5px;
    display: block;
    margin: 5px 0px;
    color: #999;
	font-size:1em;
}
.related-row ul li a:hover{
    border-color:#009688; 
    color: #009688;
}
.recommend {
    margin-top: 4em;
}
/*-- //products-page --*/
/*-- login-page --*/
.login-page{
	text-align:center;
}  
.login-body {
    padding: 3em;
    background-color: #fff;
    -webkit-box-shadow:0px 0px 4px 1px rgb(189, 189, 189);
    -moz-box-shadow:0px 0px 4px 1px rgb(189, 189, 189);
    -o-box-shadow:0px 0px 4px 1px rgb(189, 189, 189);
    -ms-box-shadow:0px 0px 4px 1px rgb(189, 189, 189);
    box-shadow:0px 0px 4px 1px rgb(189, 189, 189);
    width: 40%;
    margin: 0 auto;
}
.login-top  h4  a:hover{
    color: #353f49;
}
.login-page input[type="text"], .login-page input[type="password"] {
    font-size: 1em;
    padding: 0.9em 1em;
    width: 100%;
    color: #999;
    outline: none;
    border: 1px solid #E2DCDC;
    background: #FFFFFF;
    margin: 0 0 1em 0;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
	-webkit-appearance:none;
}
.login-page input[type="text"]:focus, .login-page input[type="password"]:focus{
	border-color:#0280e1;	
}
.login-page input[type="submit"] {
    border: none;
    outline: none;
    cursor: pointer;
    color: #fff;
    background: #0280e1;
    width: 100%;
    padding: .8em 1em;
    font-size: 1em;
    margin: 0.5em 0 0;
    -webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
    text-transform: uppercase;
	-webkit-appearance:none;
}
.login-page input[type="submit"]:hover {
    background: #137288;
    letter-spacing: 5px;
}
.login-page label.checkbox {
    float: left;
    margin: 0;
}
.forgot-grid {
    margin-top: 2em;
}
.forgot {
    float: right;
}
.forgot a {
    font-size: 1em;
    color: #353F49;
    display: block;
    font-weight: 500;
	text-decoration:none;
}
.forgot a:hover{
    color:#f44336;
}
.login-page h6 {
    font-size: 1.1em;
    color: #999;
    margin: 2em 0 0;
}
.login-page h6 a {
    color: #f44336;
    margin-left: 7px;
}
.login-page h6 a:hover {
    color: #999;
}
.login-page-bottom h5 {
    font-size: 1em;
    color: #999;
    margin: 1em 0;
    font-family: 'Offside', cursive;
}
/*-- //login-page --*/
/*-- offers-page --*/
h3.w3ls-title.w3ls-title1 {
    text-align: center;
    margin: 0 0 1.5em;
	font-size: 2.5em;
}
.offer-card-row {
    margin: 4em 0;
}
.offer-card-grids {
    width: 31.5%;
    float: left;
    padding: 2em;
    border: 1px solid #dadada;
}
.offer-card-grids:nth-child(2) {
    margin: 0 2em;
}
.offer-card-grids h4 {
    font-size: 3em;
    color: #000;
    font-family: 'Tangerine', cursive;
    font-weight: 800;
}
.offer-card-grids p {
    margin: 1em 0;
}
.offer-card-grids a {
    font-size: 1em;
    color: #0280e1;
}
.offer-card-grids a:hover { 
    color: #999;
}
.offer-bottom-grids-info,.offer-bottom-grids-info2{
	min-height: 250px;
	padding: 3em;
}
.offer-bottom-grids-info {
    background: url(../images/img2.jpg)no-repeat center 0px;
    background-size: cover; 
    text-align: right; 
}
.offer-bottom-grids-info2{
    background: url(../images/bg2.jpg)no-repeat center 0px;
    background-size: cover; 
}
.offer-bottom-grids h4 {
    font-size: 3.5em;
    color: #fff;
    font-family: 'Tangerine', cursive;
}
.offer-bottom-grids h6 {
    font-size: 1.5em;
    color: #00c57e;
    font-weight: 300;
    margin-top: 1em;
	line-height: 1.8em;
}
.offer-bottom-grids .offer-bottom-grids-info2 h6 { 
    color: #FFC107; 
}
/*-- //offers-page --*/
/*-- contact-page --*/
.contact iframe {
    width: 100%;
    min-height: 15em;
    border: 1px solid #b3b3b3;
    margin-bottom: 4em;
}
.contact h4 {
    font-size: 1.6em;
    font-weight: 300;
    margin-bottom: 1em;
} 
.contact input[type="text"] {
    width: 47.7%;
    color: #999;
    float: left;
    background: none;
    outline: none;
    font-size: 1em;
    padding: .7em 1em;
    margin-bottom: 1.5em;
    border: solid 1px #999;
    -webkit-appearance: none;
    display: inline-block;
}
.contact  input.email { 
	float:right;
}
.contact textarea {
    resize: none;
    width: 100%;
    background: none;
    color: #999;
    font-size: 1em;
    outline: none;
    padding: .6em .8em;
    border: solid 1px #999;
    min-height: 12em;
    -webkit-appearance: none;
}
.contact input[type="submit"] {
    outline: none;
    color: #fff;
    padding: 0.6em 4em;
    font-size: 1em;
    margin: 1em 0 0 0;
    -webkit-appearance: none;
    background: #f44336; 
    border: 2px solid #f44336;
    -webkit-transition: 0.5s all; 
    -moz-transition: 0.5s all;
	transition: 0.5s all;
}
.contact  input[type="submit"]:hover {
    background: none;
    color: #f44336;
}
::-webkit-input-placeholder {
	color:#999 !important;
}
:-moz-placeholder { /* Firefox 18- */
	color:#999 !important;
}
::-moz-placeholder {  /* Firefox 19+ */
	color:#999 !important;
}
:-ms-input-placeholder {  
	color:#999 !important;
}
.cnt-w3agile-row i.fa {
    font-size: 2em;
    color: #0280e1;
    border: 1px solid #0280e1;
    padding: .5em;
    -webkit-border-radius: 50%;
    -moz-border-radius: 50%;
    -o-border-radius: 50%;
    -ms-border-radius: 50%;
    border-radius: 50%;
}
.cnt-w3agile-row i.fa.fa-truck {
	-webkit-transform: rotatey(180deg);
	-moz-transform: rotatey(180deg);
	-o-transform: rotatey(180deg);
	-ms-transform: rotatey(180deg);
    transform: rotatey(180deg);
}
.cnt-w3agile-row.cnt-w3agile-row-mdl {
    margin: 1.5em 0;
} 
/*-- //contact-page --*/
/*-- card-page --*/
.agile-card-top {
    padding: 4em  5em;
    background: url(../images/bg.png)#4dff03 no-repeat;
    background-size: cover;
}
.card-top-grids {
    text-align: center;
    padding: 0 3em;
}
.card-top-grids h4 {
    font-size: 4em;
    color: #fff;
    font-weight: 400;
    font-family: 'Lovers Quarrel', cursive;
    line-height: 0.8em;
    margin-bottom: .3em;
}
.card-top-grids h4 span {
    color: #f3cd03;
    font-size: 1.5em;
    font-weight: 800;
}
.card-top-grids i.fa {
    font-size: 5em;
    color: #f5f5f5;
}
.card-top-grids h5 {
    font-size: 1.3em;
    color: #fff;
    letter-spacing: 1px;
    font-weight: 300;
    line-height: 1.5em;
    margin-top: 1em;
}
.agile-card-text h5{ 
    margin: 2.5em 0 0.8em; 
}
.agile-card-text h5, .faq-w3agile h5{
    font-size: 1.3em;
    color: #000; 
    font-family: 'Offside', cursive;
}
/*-- //card-page --*/
/*-- help --*/
.help .header-search {
    margin: 0 auto;
    text-align: center;
    float: none;
}
.help .header-search input[type="search"] { 
    border: none;
    border-bottom: 1px solid #cccccc; 
}
.help .header-search .btn-default { 
    width: 108px;
    height: 49px;
    color: #fff; 
}
.help .header-search:hover input[type="search"]{
    border-color: #137288;
}
.help .header-search:hover .btn-default{
    background: #137288;
}
/*-- //help --*/
/*-- faq-page --*/
.faq-w3agile .faq li {
    margin-top: 2em;
    list-style-type: decimal;
    padding-left: 0.5em;
}
.faq-w3agile .faq > li > a { 
    color: #000; 
} 
.faq-w3agile .faq li li.subitem1 {
    display: block;
    margin-top: 1em;
}
/*-- //faq-page --*/
/*-- services --*/
.services-grids {
    text-align: center;
}
.services-grids.services-grids-btm {
    margin-top: 3em;
}
.services-grids i.fa {
    font-size: 1.8em;
    color: #fff;
    display: inline-block; 
    text-decoration: none;
    z-index: 1;
    width: 70px;
    height: 70px;
    line-height: 2.7em;
    background: #137288;
	-webkit-border-radius: 50%;
	-moz-border-radius: 50%;
	-o-border-radius: 50%;
	-ms-border-radius: 50%;
	border-radius: 50%;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
}
.services-grids h4,.about-text-grids h4{
    font-size: 1.2em;
    margin: 1em 0 .5em;
    color: #000;
    line-height: 1.5em;
    position: relative;
    font-family: 'Offside', cursive;
}
.services-grids:hover i.fa {
    background: #f44336;
}
/*-- //services --*/
/*-- values --*/
.values h5 {
    font-size: 1.5em;
    margin-bottom: 0.5em;
    font-family: 'Offside', cursive;
	color: #137288;
}
.w3values-row {
    margin-top: 2em;
}
.w3values-grids h6 {
    font-size: 1.2em;
    color: #000;
    margin: 1.5em 0 .5em;
}
/*-- //values --*/
/*-- about --*/
.ftr-top-left.about-text-grids {
    text-align: center;
}
.ftr-top-left.about-text-grids i.fa {
    color: #999;
    margin-top: 1em;
}
.history h3.w3ls-title {
    font-size: 1.8em;
    margin: 2em 0 0.5em;
}
/*-- //about --*/
/*-- privacy --*/
.privacy-w3row p {
    margin-top: 1.5em;
}
.privacy-w3row h5 {
    font-size: 1.3em;
    color: #000;
    font-family: 'Offside', cursive;
    margin-top: 2em;
}
/*-- //privacy --*/
/*-- sitemap --*/
.scrollspy-example {
    position: relative;
    height: 100em;
    margin-top: 10px;
    overflow: auto;
}
.sitemap-tabs ul li {
    display: inline-block;
    width: 18%; 
    margin: 0.5em;
    text-align: center;
    font-size: 1.1em;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
}
.sitemap-tabs ul li a {
    color: #464646;
	padding: 1em 0;
    border: 1px solid #e2e2e2;
	display: block;
}
.sitemap-tabs ul li a i.fa {
    font-size: 1.3em;
    margin-right: .5em;
}
.sitemap-tabs ul li a:hover {
	border-color:#0280e1;
	color: #0280e1;
}
.sitemap-tabs ul li a:hover i.fa{
	color:#0280e1;
}  
nav.sitemap-tabs.scroll-to-fixed-fixed {
    background: #fff;
}
.sitemap-text {
    padding: 3em 0;
}
.affix {
	top:0;
	width: 100%;
	z-index: 9999 !important;
}
.navbar {
	margin-bottom: 0px;
}
.affix ~ .container-fluid {
    position: relative; 
}  
.sitemap-tabs.affix {
    left: 0;
    width: 100%;
    background: #ececec;
    padding: 0.5em 0;
}
.sitemap-tabs.affix ul li {
    font-size: 1em;
    margin: 0.5em;
}
.sitemap-tabs.affix ul li a { 
    padding: 0.5em 0; 
}
.sitemap-tabs.affix ul li a i.fa {
    font-size: 1em; 
}
nav.sitemap-tabs.affix div#myNavbar {
    width: 80%;
    margin: 0 auto;
}
h3.w3sitemap-title {
    font-family: 'Offside', cursive;
    font-size: 1.5em;
	color: #f44336; 
    border-bottom: 1px solid #e8e8e8;
    padding-bottom: 0.5em;
}  
h3.w3sitemap-title i.fa {
    font-size: 1.2em;
    color: #f44336;
    border: 1px solid;
	-webkit-border-radius: 50%;
	-moz-border-radius: 50%;
	-o-border-radius: 50%;
	-ms-border-radius: 50%;
    border-radius: 50%;
    width: 50px;
    height: 50px;
    text-align: center;
    line-height: 2em;
    margin-right: .5em;
}
/*-- sitemap-text --*/  
.sitemap-text {
    padding: 4em 0 0;
}
.affix ~ .sitemap-text {
    padding: 9em 0 0;
}  
.sitemap-text ul li {
    display: block;
} 
h5.sitemap-text-title {
    font-size: 1.1em; 
	margin-top: 1.5em;
}
.sitemap-text h5.sitemap-text-title a{ 
    color: #000;
}
.sitemap-text ul li{
    display: block;
    margin-top: 0.8em;
}
.sitemap-text ul li a {
    color: #999;
	text-transform: capitalize;
}
.sitemap-text ul li a:hover{
    color: #0280e1;
} 
.sitemap-row2 h3.w3sitemap-title {
    margin-bottom: 0.6em;
}
/*-- //sitemap --*/  
/*-- single-page --*/ 
.single-top-left {
    margin-left:5%;
    width: 34%;
}
.single-top-right h3 {
    text-transform: capitalize;
    font-size: 2em;
    color: #f44336;
    font-family: 'Offside', cursive;
	margin-bottom: .3em;
} 
.single-top-right ul li {
    display: inline-block;
    margin-left: 3px;
    color: #0280e1;
}
.single-top-right {
    padding-left: 5em;
}  
.single-rating {
    margin: 1em 0;
    border-bottom: 1px solid #e0e0e0;
    padding-bottom: 1em;
}
.single-top-right ul li.rating {
    margin: 0 1.5em;
    color: #999;
    font-size: 1em;
}
.single-top-right ul li a{ 
    color: #999; 
}
.single-top-right ul li a:hover{ 
    color: #0280e1; 
}
.single-price ul li {
    margin-right: 1em;
    font-size: 1em;
    color: #999;
}
.single-price ul li:nth-child(1) {
    font-size: 2.8em;
    font-weight: 300;
	margin-right: 0.5em;
}
.single-price ul li span.w3off {
    font-size: 1.5em;
    color: #0280e1;
    font-family: 'Offside', cursive;
}
.single-price.price ul li a {
    color: #f44336;
}
.single-price.price ul li a:hover{
    color: #999;
}
p.single-price-text {
    margin: 1.5em 0;
}
.single-top-right form {
    display: inline;
}
.single-top-right .w3ls-cart{
    width: 28%; 
    font-weight: 300;
    padding: 0.6em 0; 
	border-color: #f44336;
	-webkit-transition:.5s all;
	-moz-transition:.5s all;
	-o-transition:.5s all;
	-ms-transition:.5s all;
	transition:.5s all;
	display: inline-block;
}
.single-top-right .w3ls-cart:hover{
    background: #0280e1;
	border-color: #0280e1;
}
.single-top-right .w3ls-cart i.fa {
    margin-right: 3px;
}
.single-top-right .w3ls-cart.w3ls-cart-like {
    margin-left: 1em;
    background: none;
    border: 1px solid #0280e1;
    color: #0280e1;
}
.single-top-right .w3ls-cart.w3ls-cart-like:hover{ 
    background: #0280e1; 
    color: #fff;
} 
.single-page-icons.social-icons {
    margin: 5em 5em;
}
.single-page-icons.social-icons ul li h4 {
    font-size: 1.1em;
    color: #999;
    margin-right: 1em;
}
.single-page-icons.social-icons ul li { 
    vertical-align: middle;
}
/*-- collapse-tabs -*/
.collpse.tabs {
    padding: 2em 0 5em;
}
.panel-group {
    margin-bottom: 0;
}
.collpse.tabs h4.panel-title a {
    font-size: 1em;
    text-transform: uppercase;
    color: #ffffff;
    display: block;
    text-decoration: none;
    padding: .8em 1.5em;
    font-weight: 300;
	position:relative;
}
.collpse.tabs .panel-default {
    border-color: #37a1f3;
}
.collpse.tabs .panel-body {
	padding: 15px;
	color: #999;
	line-height: 1.8em;
	font-size: 1em;
}
.collpse.tabs .panel-default > .panel-heading {
    padding: 0;
    background: #37a1f3;
} 
.pa_italic span.fa-arrow{
    display: none;
}
.pa_italic i.fa-arrow, .collapsed span.fa-arrow{
    right: 3%;
    font-size: 1.8em;
    color: #ffffff;
    position: absolute;
    top: 20%; 
}
.collapsed i.fa-arrow{
    display: none;
}
.collapsed span.fa-arrow{
    display: inline-block;
}
.pa_italic i.fa-icon {
    margin-right: 0.8em;
}
/*-- //single-page --*/
/*-- cart-css --*/ 
#PPsbmincart form {
    position: relative;
    padding: 1em;
    background: #fbfbfb;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	-o-border-radius: 4px;
	-ms-border-radius: 4px;
    border-radius: 4px;
    color: #333;
	-webkit-box-shadow: 0px 0px 5px 2px #9a9a9a;
	-moz-box-shadow: 0px 0px 5px 2px #9a9a9a;
	-o-box-shadow: 0px 0px 5px 2px #9a9a9a;
	-ms-box-shadow: 0px 0px 5px 2px #9a9a9a;
    box-shadow: 0px 0px 5px 2px #9a9a9a;
}
#PPsbmincart form  ul {
    overflow-y: scroll;
    max-height: 300px;
}
#PPsbmincart {
    display: none;
    position: fixed;
    left: 68%;
    top: 20%;
	width: 420px;
} 
.sbmincart-showing #PPsbmincart {
    display: block;
    z-index: 9999; 
    -webkit-animation: zoomIn .3s ease;
	-moz-animation: zoomIn .3s ease;
	-o-animation: zoomIn .3s ease;
	-ms-animation: zoomIn .3s ease;
	animation: zoomIn .3s ease;
}
#PPsbmincart form.sbmincart-empty {    font-size: 16px;    font-weight: bold;}
#PPsbmincart ul {    clear: both;    float: left;    width: 100%;    margin: 5px 0 20px;    padding: 1em;    list-style-type: none;    background: #fff;    border: 1px solid #ccc;    border-radius: 4px;    box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);}
#PPsbmincart .sbmincart-empty ul {    display: none;}
#PPsbmincart .sbmincart-closer {
    float: right;
    margin: -12px -10px 0;
    padding: 0 10px;
    background: 0;
    border: 0;
    font-size: 25px;
    cursor: pointer;
    font-weight: bold;
    outline: none;
}
#PPsbmincart .sbmincart-item {
    clear: left;
    padding: 7px 0;
    min-height: 35px;
}
#PPsbmincart .sbmincart-item + .sbmincart-item {    border-top: 1px solid #f2f2f2;}
#PPsbmincart .sbmincart-item a {    color: #333;    text-decoration: none;}
#PPsbmincart .sbmincart-details-name {    float: left;    width: 62%;}
#PPsbmincart .sbmincart-details-quantity {    float: left;    width: 15%;}
#PPsbmincart .sbmincart-details-remove {    float: left;    width: 7%;}
#PPsbmincart .sbmincart-details-price {    float: left;    width: 16%;    text-align: right;}
#PPsbmincart .sbmincart-attributes {
    margin: 0;
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    color: #999;
    font-size: 12px;
    line-height: 22px;
    overflow: inherit;
    height: inherit;
}
#PPsbmincart .sbmincart-attributes li {    display: inline;}
#PPsbmincart .sbmincart-attributes li:after {    content: ",";}
#PPsbmincart .sbmincart-attributes li:last-child:after {    content: "";}
#PPsbmincart .sbmincart-quantity {    width: 30px;    height: 18px;    padding: 2px 4px;    border: 1px solid #ccc;    border-radius: 4px;    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);    font-size: 13px;    text-align: right;    transition: border linear 0.2s, box-shadow linear 0.2s;    -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;    -moz-transition: border linear 0.2s, box-shadow linear 0.2s;}
#PPsbmincart .sbmincart-quantity:hover {    border-color: #0078C1;}
#PPsbmincart .sbmincart-quantity:focus {    border-color: #0078C1;    outline: 0;    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 3px rgba(0, 120, 193, 0.4);}
#PPsbmincart .sbmincart-remove {    width: 18px;    height: 19px;    margin: 2px 0 0;    padding: 0;    background: #b7b7b7;    border: 1px solid #a3a3a3;    border-radius: 3px;    color: #fff;    font-size: 13px;    opacity: 0.70;    cursor: pointer;}
#PPsbmincart .sbmincart-remove:hover {    opacity: 1;}
#PPsbmincart .sbmincart-footer {
    clear: left; 
    text-align: center;
    margin-left: -1em;
}
p.sbmincart-empty-text {
    color: #f44336;
    font-weight: 500;
}
#PPsbmincart .sbmincart-subtotal {
    position: relative;
    bottom: 3px;
    padding-left: 0;
    left: 10px;
    font-size: 16px;
    font-weight: bold;
    text-align: left;
    margin-left: 0.5em;
}
#PPsbmincart .sbmincart-submit {    position: absolute;    bottom: 10px;    right: 10px;    min-width: 153px;    height: 33px;    margin-right: 6px;    padding: 0 9px;    border: 1px solid #ffc727;    border-radius: 5px;    color: #000;    text-shadow: 1px 1px 1px #fff6e9;    cursor: pointer;    background: #ffaa00;    background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZjZlOSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmZmFhMDAiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);    background: -moz-linear-gradient(top, #fff6e9 0%, #ffaa00 100%);    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fff6e9), color-stop(100%,#ffaa00));    background: -webkit-linear-gradient(top, #fff6e9 0%,#ffaa00 100%);    background: -o-linear-gradient(top, #fff6e9 0%,#ffaa00 100%);    background: -ms-linear-gradient(top, #fff6e9 0%,#ffaa00 100%);    background: linear-gradient(to bottom, #fff6e9 0%,#ffaa00 100%);}
#PPsbmincart .sbmincart-submit img {    vertical-align: middle;    padding: 4px 0 0 2px;}
/* Let's get this party started */
#PPsbmincart form  ul::-webkit-scrollbar {
    width: 5px;
} 
/* Track */
#PPsbmincart form  ul::-webkit-scrollbar-track { 
	-webkit-box-shadow: inset 0 0 6px #f44336; 
	-moz-box-shadow: inset 0 0 6px #f44336;
	-o-box-shadow: inset 0 0 6px #f44336;
	-ms-box-shadow: inset 0 0 6px #f44336; 
	box-shadow: inset 0 0 6px #999; 
	-webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	-o-border-radius: 10px;
	-ms-border-radius: 10px;
	border-radius: 10px;
} 
/* Handle */
#PPsbmincart form  ul::-webkit-scrollbar-thumb {
    -webkit-border-radius: 10px;
	-moz-border-radius: 10px;
	-o-border-radius: 10px;
	-ms-border-radius: 10px;
    border-radius: 10px;
    background: #f44336; 
	-moz-box-shadow: inset 0 0 6px #f44336;
	-o-box-shadow: inset 0 0 6px #f44336; 
	-ms-box-shadow: inset 0 0 6px #f44336; 
    -webkit-box-shadow: inset 0 0 6px #f44336;
	box-shadow: inset 0 0 6px #f44336; 	
} 
/*-- //cart-css --*/ 
/*-- index-modal --*/ 
.agileits-modal .modal-dialog {
    margin-top: 7%;
}
.agileits-modal .modal-content {
    padding: 2em;
}
.agileits-modal .close {
    outline: none;
}
.agileits-modal h4 {
    color: #F44336;
    font-family: 'Offside', cursive; 
	 font-size: 1.8em;
} 
.agileits-modal h5 {
    font-size: 1em;
    color: #999;
    margin: 1em 0 1.5em;
    font-weight: 200;
}
.agileits-modal select.form-control.bfh-states {
    box-shadow: none;
    font-size: 1em;
    color: #999;
    outline: none;
    padding: .6em 1em;
    height: 40px;
	border-radius: 0;
}
.agileits-modal input[type="text"] {
    width: 100%;
    color: #999;  
    outline: none;
    font-size: 1em;
    padding: .7em 1em;
    margin: 1.5em 0;
    border: solid 1px #ccc;
    -webkit-appearance: none;
    display:block;
}
.agileits-modal .close2 {
    background: #0280e1;
    border: none;
    padding: .8em 2em;
    color: #fff;
    font-size: 1em;
    outline: none;
}
/*-- //index-modal --*/ 
/*-- responsive-design --*/
@media(max-width:1440px){ 
}
@media(max-width:1366px){
.welcome, .deals, .card-page, .help, .values, .privacy, .sitemap, .products, .related-products, .login-page, .contact, .about, .faq-w3agile, .wthree-offers, .w3l-services {
    padding: 4em 0;
}
.login-body { 
    width: 45%; 
}
}
@media(max-width:1280px){
.single-top-left {
    margin-left: 10%;
    width: 38%;
    padding: 0;
}
}
@media(max-width:1080px){
.header-two {
    padding: 1em 0 1.3em; 
}
.header-search {
    width: 52%;
    margin: 2.2em 4em 1.2em;
}
#PPsbmincart { 
    left: 58%;
    top: 22%; 
}
.menu { 
    width: 25%;
}
.welcome, .deals, .card-page, .help, .values, .privacy, .sitemap, .products, .related-products, .login-page, .contact, .about, .faq-w3agile, .wthree-offers, .w3l-services {
    padding: 3em 0;
}
.nav-tabs li a i.fa {
    font-size: 4em; 
}
.welcome .bs-example-tabs ul.nav-tabs li { 
    margin: 0 2.5em;
}
.owl-carousel .item {
    margin: 0.5em; 
}
.header-cart { 
    margin: 2em 0 1em;
} 
.glry-w3agile-grids .view-caption h5 {
    font-size: 1.2em; 
    width: 50px;
    height: 50px; 
    margin: 1em auto;
}
.w3ls-add-grids h4 {
    font-size: 1.4em; 
    letter-spacing: 1px; 
	padding-top: 2em;
}
.w3ls-add-grids { 
    width: 32.2%;
    min-height: 220px; 
}
.soon {
    margin-top: 4em;
    padding: 4em 0; 
}
.soon h3 { 
    font-size: 2.6em; 
}
h3.w3ls-title { 
    font-size: 1.8em; 
    margin: 0.8em 0; 
}
.subscribe {
    padding: 2.5em 0;
}
.subscribe input[type="text"] { 
    padding: 0.8em; 
}
.subscribe input[type="submit"] { 
    padding: 0.8em 1.5em; 
}
.footer {
    padding-top: 4em; 
}
.address-right:before { 
    bottom: -166px;
    left: -36px;
    width: 468px;
    height: 145px; 
}
.agile-products {
    padding: 1em; 
}
.product-grids {
    margin-top: 2em;
}
.single-top-right {
    padding-left: 3em;
}
.single-price ul li:nth-child(1) {
    font-size: 2.2em; 
	margin-right: 0;
}
.single-price ul li span.w3off {
    font-size: 1.3em; 
}
p.single-price-text {
    margin: 1.2em 0;
}
.single-top-right h3 { 
    font-size: 1.7em; 
}
.single-page-icons.social-icons {
    margin: 3em 5em;
}
.login-body {
    width: 50%;
    padding: 2.5em;
}
h3.w3ls-title.w3ls-title1 { 
    margin: 0 0 1.2em;
    font-size: 2.2em;
}
.offer-card-grids {
    width: 31%; 
    padding: 1.5em; 
}
.offer-card-row {
    margin: 3em 0;
}
.contact-w3text {
    padding: 0;
}
.contact-w3icon {
    padding: 0 0.5em;
}
.contact-right {
    padding-right: 0;
}
.agile-card-top {
    padding: 3em 3em; 
}
.card-top-grids h5 {
    font-size: 1.2em; 
    letter-spacing: 0px; 
}
.card-top-grids h4 span { 
    font-size: 1.3em; 
}
.history h3.w3ls-title { 
    margin: 1.5em 0 0.5em;
}
.services-grids h4, .about-text-grids h4 {
    font-size: 1.1em; 
}
.sitemap-tabs ul li { 
    font-size: 1em; 
}
nav.sitemap-tabs.affix div#myNavbar {
    width: 90%; 
}
.new-tag h6 { 
    top: 3%;
    left: 3%;
    font-size: .8em;
}
.new-tag:before { 
    border-top-width: 50px;
    border-right-width: 50px; 
}
.related-row ul li a { 
    font-size: 0.9em;
}
}
@media(max-width:1024px){
.w3ls-header-right ul li.dropdown { 
    padding: 0 0.5em;
}
.w3ls-add-grids { 
    min-height: 200px;
}
.w3ls-add-grids.w3ls-add-grids-mdl h6 { 
    margin: 1.6em 0;
}
.offer-bottom-grids-info, .offer-bottom-grids-info2 {
    min-height: 215px; 
}
.offer-bottom-grids h6 {
    font-size: 1.2em; 
    margin-top: 0.6em; 
}
.w3agile-ftr-top {
    padding: 3em 0; 
}
ul.faq {
    padding-left: 2em;
}
}
@media(max-width:991px){
.header-search {
    width: 45%; 
	margin: 2.2em 2em 1.2em;
}
.header-cart {
    margin: 1.6em 0 1em;
}
.header-logo h1 {
    font-size: 2.8em; 
}
.header-search input[type="search"] { 
    padding: 0.8em 4em 0.8em 0.8em; 
} 
.header-search .btn-default { 
    width: 48px;
    height: 44px; 
}
.cart {
    margin-right: 1.5em;
    padding-right: 1.5em; 
}
.menu {
    width: 30%;
} 
.welcome .bs-example-tabs ul.nav-tabs li {
    margin: 0 2em;
}
.glry-w3agile-grids img {
    width: 90%; 
}
.glry-w3agile-grids:hover .view-caption {
    -webkit-transform: translate3d(-5%, 0px, 0px);
    -moz-transform: translate3d(-5%, 0px, 0px);
    -o-transform: translate3d(-5%, 0px, 0px);
    -ms-transform: translate3d(-5%, 0px, 0px);
    transform: translate3d(-5%, 0px, 0px);
}
.glry-w3agile-grids .view-caption h5 {
    font-size: 1.1em; 
}
.glry-w3agile-grids .view-caption { 
    padding: 7% 5% 5% 13%; 
}
.w3ls-add-grids h4 {
    font-size: 1.2em;
    letter-spacing: 0px; 
}
.w3ls-add-grids {
    min-height: 185px;
    width: 32%;
} 
.soon { 
    padding: 3em 0;
}
.soon h4 { 
    margin: 1em 0 1.5em; 
}
.soon h3 {
    font-size: 2.4em;
}
.focus-grid {
    float: left;
    width: 33%;
    padding: 0 .5em;
}
h4.clrchg {
    font-size: 1em;
    margin-top: 1em;
}
.wthree-btn { 
    margin: 0.5em auto; 
}
.focus-image i.fa {
    font-size: 2.5em;
}
.ftr-top-left {
    float: left;
    text-align: right;
    width: 24%;
}
.ftr-top-grids:nth-child(2) {
    margin: 2em 0;
}
.ftr-top-left i.fa {
    font-size: 2em; 
    width: 60px;
    height: 60px; 
}
.footer-grids {
    float: left;
}
.footer h3 {
    font-size: 1.3em; 
}
.address-left { 
    float: left;
    width: 30%;
	padding: 1em;
} 
.footer-logo.header-logo h2 {
    font-size: 2.5em;
}
.address-right { 
    float: left;
}
.address-right:before {
    bottom: -170px; 
    height: 144px;
	left: -34px;
}
.product-w3ls-right {
    float: none; 
}
.rsidebar { 
    float: none;
    width: 100%; 
    margin-top: 2em;
} 
.product-grids {
    margin-top: 1.5em; 
    float: left;
    width: 25%;
    padding: 0 .5em;
}
.w3ls-cart.pw3ls-cart{ 
    left: 13%;
}
.single-top-left {
    margin-left: 13%;
    width: 50%; 
}
.single-top-right {
    padding: 0;
    margin-top: 3em;
}
.login-body {
    width: 70%; 
}
.offer-card-grids h4 {
    font-size: 2.8em; 
}
.offer-card-grids:nth-child(2) {
    margin: 0 1em;
}
.offer-card-grids {
    width: 32%; 
}
.offer-bottom-grids-info {
    margin-top: 1em;
}
h3.w3ls-title.w3ls-title1 { 
    font-size: 2em;
}
.contact iframe { 
    margin-bottom: 2em;
}
.contact h4 {
    font-size: 1.4em; 
    margin-bottom: 0.5em;
}
.contact-w3icon { 
    float: left;
}
.contact-w3text { 
    float: left;
    padding-left: 1em;
}
.contact-right { 
    margin-top: 2em;
}
.card-top-grids { 
    padding: 0 1em;
    float: left;
    width: 33%;
}
.card-top-grids i.fa {
    font-size: 3em; 
}
.card-top-grids h5 {
    font-size: 1em; 
}
.card-top-grids h4 {
    font-size: 3em; 
}
.agile-card-top {
    padding: 2em 2em;
}
.agile-card-text h5 {
    margin: 2em 0 0.3em;
}
.help .header-search {
    margin: 0 auto;  
    width: 70%;
}
.help .header-search .btn-default { 
    height: 44px; 
}
#PPsbmincart {
    left: 51%;
    top: 24%;
}
.services-grids { 
    float: left;
    width: 33.33%;
    margin-top: 1em;
}
.sitemap-tabs ul li { 
	width: 23%;
    margin: 0.3em; 
}
.sitemap-tabs ul li a { 
    padding: 0.5em 0;  
}
.sitemap-tabs ul li a i.fa { 
	font-size: 1.1em;
    margin-right: .2em;
}
.sitemap-tabs.affix ul li {
    font-size: 0.9em; 
    width: 18%;
}
.sitemap-text-grids {
    float: left;
    width: 25%;
}
.img-responsive, .thumbnail > img, .thumbnail a > img, .carousel-inner > .item > img, .carousel-inner > .item > a > img {
	margin: 0 auto;
} 
.services-grids.services-grids-btm {
    margin-top: 1em;
}
.single-page-icons.social-icons {
    margin: 3em 0;
}
}
@media(max-width:800px){
.w3ls-header-left,.w3ls-header-right{
    float: none;
    width: 100%;
    text-align: center;
}
.w3ls-header-right { 
    margin-top: 0.5em;
}
.w3ls-header-right ul li.dropdown {
    padding: 0 .8em;
}
#PPsbmincart {
    left: 49%;
    top: 26%;
    width: 370px;
}
.sitemap-tabs.affix ul li { 
    margin: 0.3em 0;
    width: 19.5%;
}
nav.sitemap-tabs.affix div#myNavbar {
    width: 95%;
}
.affix ~ .sitemap-text {
    padding: 8em 0 0;
}
.footer-logo.header-logo h2 {
    font-size: 2.3em;
}
.address-right:before {
    bottom: -161px;
    height: 130px; 
}
.header-two {
    padding: 0.5em 0 0.8em;
}
.header-logo h1 {
    font-size: 2.3em;
}
.header-search { 
    margin: 1.6em 2em 1em;
}
.w3view-cart i.fa {
    font-size: 1.5em; 
}
.w3view-cart { 
    width: 50px;
    height: 50px; 
}
.my-account { 
    margin: 1.1em 0;
}
.header-cart {
    margin: 1.5em 0 0em;
}
}
@media(max-width:768px){
.welcome, .deals, .card-page, .help, .values, .privacy, .sitemap, .products, .related-products, .login-page, .contact, .about, .faq-w3agile, .wthree-offers, .w3l-services {
    padding: 2em 0;
}
.nav-tabs li a i.fa {
    font-size: 3em;
}
.nav-tabs li a h5 {
    font-size: 1.1em; 
    margin-top: 0.5em; 
}
h3.w3ls-title {
    font-size: 1.6em; 
}
.soon h3 {
    font-size: 2.2em;
}
.soon {
    margin-top: 3em; 
}
h4.clrchg {
    font-size: 0.9em; 
}
.header-two.scroll-to-fixed-fixed .header-cart {
    margin: 1.6em 0 0;
} 
.faq-w3agile ul.faq {
    padding-left: 3em;
}
}
@media(max-width:736px){
.agileits-modal .modal-content {
    padding: 1em;
}
.agileits-modal .modal-content {
    padding: 1em;
    width: 75%;
    margin: 0 auto;
} 
.glry-w3agile-grids .view-caption h4 { 
    font-size: 1.1em; 
}
.w3ls-cart { 
    font-size: 0.9em; 
}
.glry-w3agile-grids .view-caption {
    padding: 10% 5% 10% 13%;
}
.w3ls-add-grids {
    min-height: 185px;
    width: 80%;
    margin: 0 auto;
	float:none;
}
.w3ls-add-grids.w3ls-add-grids-mdl {
    margin: 1em auto;
}
.w3ls-add-grids a { 
    padding: 2em 3em;
}
.offer-card-grids {
    width: 31%;
}
#PPsbmincart {
    left: 47%; 
    width: 353px;
}
.product-top ul.dropdown-menu { 
    min-width: 103px;
}
.single-top-right h3 {
    font-size: 1.4em;
}
.single-top-right .w3ls-cart {
    width: 20%; 
} 
}
@media(max-width:667px){
.w3ls-header-right ul li.dropdown {
    padding: 0 .5em;
}
.header-search {
    width: 39%; 
}
.menu {
    width: 34%;
}
.move-text { 
    width: 66%; 
}
.welcome .bs-example-tabs ul.nav-tabs li {
    margin: 0 1.5em;
}
.glry-w3agile-grids img {
    width: 80%;
}
.glry-w3agile-grids .view-caption h5 { 
    line-height: 3.3em; 
}
.ClassyCountdownDemo {
    width: 70%; 
}
.address-left {
    float: none;
    width: 100%;
    padding: 1em 2em;
}
.address-right {
    float: none;
    width: 100%;
    margin-top: 2em;
	padding: 0;
}
.footer {
    padding: 3em 0 9em;
}
.address-right:before {
    bottom: -127px;
    height: 120px;
    left: 37%;
	width: 389px;
}
.sitemap-tabs ul li {
    width: 31%;
    margin: 0.3em;
}
.sitemap-tabs.affix ul li {
    margin: 0.3em 0;
    width: 24%;
}
h3.w3sitemap-title i.fa {
    font-size: 1em; 
    width: 45px;
    height: 45px; 
    margin-right: 0.3em;
}
.sitemap-text-grids { 
    padding: 0 .5em;
}
h5.sitemap-text-title {
    font-size: 1em; 
}
h3.w3sitemap-title { 
    font-size: 1.3em; 
} 
}
@media(max-width:640px){
.agileits-modal .close2 { 
    padding: .6em 2em; 
}
.w3ls-header { 
    padding: 0.5em 1em;
} 
.header-logo h1, .header-two.scroll-to-fixed-fixed .header-logo h1{
    font-size: 2em;
}
.header-logo h6 {
    font-size: 0.7em; 
    letter-spacing: 0px; 
}
.header-search input[type="search"],.header-two.scroll-to-fixed-fixed .header-search input[type="search"]{
    padding: 0.6em 4em 0.6em 0.8em;
}
.header-search .btn-default,.header-two.scroll-to-fixed-fixed .header-search .btn-default{
    width: 48px;
    height: 39px;
}
.cart {
    margin-right: 1em;
    padding-right: 1em;
} 
.header-two {
    padding: 0.5em 0 0.9em;
}
.header-search,.header-two.scroll-to-fixed-fixed .header-search {
    margin: 1.2em 1.5em 0;
    width: 51%;
}
.w3view-cart {
    width: 45px;
    height: 45px;
}
.my-account a {
    font-size: 0.9em; 
}
.my-account {
    margin: 0.8em 0;
}
.header-cart {
    margin: 1em 0 0em;
}
.welcome .bs-example-tabs ul.nav-tabs li {
    margin: 0 1.2em;
}
.nav-tabs li a h5 {
    font-size: 1em; 
}
h3.w3ls-title {
    font-size: 1.4em;
}  
.copy-right { 
    padding: 1.5em 0; 
}
.offer-card-grids {
    width: 60%;
    float: none;
	margin:0 auto;
	text-align: center;
}
.offer-card-grids:nth-child(2) {
    margin: 1em auto;
}
.offer-card-grids h4 {
    font-size: 2.5em;
}
.offer-bottom-grids h4 {
    font-size: 3em; 
}
.offer-bottom-grids h6 {
    font-size: 1em; 
}
.offer-bottom-grids-info, .offer-bottom-grids-info2 {
    min-height: 165px;
	padding: 2em;
}
.w3agile-ftr-top {
    padding: 2em 0;
}
.card-top-grids i.fa {
    font-size: 2.5em;
}
.help .header-search {
    margin: 0 auto;
    width: 85%;
}
.help .header-search .btn-default {
    height: 38px;
    width: 90px;
}
.help .header-search input[type="search"] {
    padding: 0.6em 7em 0.6em 0.8em;
}
.w3agile-ftr-top .ftr-top-left { 
    width: 15%;
}
.w3agile-ftr-top .ftr-top-right { 
    width: 82%;
}
.w3agile-ftr-top .ftr-top-left i.fa {
    font-size: 1.5em;
    width: 50px;
    height: 50px;
	line-height: 2.3;
}
.w3agile-ftr-top .ftr-top-right h4 {
    font-size: 1.1em; 
    margin: 0.4em 0; 
}
h3.w3ls-title.w3ls-title1 {
    font-size: 1.8em;
} 
.header-two.scroll-to-fixed-fixed .header-cart {
    margin: 1em 0 0;
}
.contact iframe { 
    min-height: 12em; 
} 
.contact input[type="text"] { 
    margin-bottom: 1em; 
} 
.services-grids h4, .about-text-grids h4 {
    font-size: 1em;
}
.history h3.w3ls-title {
    font-size: 1.5em; 
}
.product-grids { 
    width: 33.33%; 
}
.product-w3ls-right .breadcrumb {
    padding: 8px 15px;
    margin-bottom: 10px;
    list-style: none;
    background-color: #f5f5f5;
    border-radius: 4px;
}
.product-top h4 {
    font-size: 1.1em; 
}
.product-top { 
    padding: 0.5em 2em;
}
.services-grids i.fa {
    font-size: 1.5em; 
    width: 60px;
    height: 60px;
    line-height: 2.7em; 
}
.values h5 {
    font-size: 1.3em; 
}
.footer h3 {
    font-size: 1.2em;
}  
.w3ls-header-right .dropdown-menu li  a{
    font-size: .9em;
}
#PPsbmincart {
    left: 38%; 
    top: 21%;
}
.privacy-w3row p {
    margin-top: 0.5em;
}
.privacy-w3row h5 {
    font-size: 1.2em; 
    margin-top: 1.5em;
}  
}
@media(max-width:600px){ 
.header-search, .header-two.scroll-to-fixed-fixed .header-search { 
    width: 46%;
}
.address-right:before { 
    height: 107px; 
    width: 349px;
}
.cd-dropdown-trigger { 
    padding: 0 30px 0 0;
} 
.glry-w3agile-grids .view-caption h5 {
    font-size: 1em;
    margin: 0.5em auto; 
	line-height: 3.5em; 
}
.w3ls-header-right ul li a i.fa {
    margin-right: 3px;
}
.w3ls-header-right ul li.dropdown {
    padding: 0 .3em;
}
#PPsbmincart { 
    width: 340px;
}
.welcome .bs-example.bs-example-tabs .nav-tabs { 
    margin: 1em 0 1em;
}
.recommend {
    margin-top: 2em;
}
.offer-card-grids {
    width: 70%; 
}
.card-top-grids {
    padding: 0 0.5em; 
}
.agile-card-text h5 {
    margin: 1em 0 0.3em;
}
.faq-w3agile ul.faq {
    padding-left: 1em;
}
.w3ls-add-grids a {
    padding: 1.5em 3em;
}
}
@media (max-width: 568px){
.header-search, .header-two.scroll-to-fixed-fixed .header-search {
    margin: 1.2em 1em 0; 
} 
.address-right:before { 
    left: 32%; 
}
.ClassyCountdownDemo {
    width: 80%;
}
}
@media(max-width:480px){ 
.agileits-modal h4 { 
    font-size: 1.5em;
}
.agileits-modal .modal-content { 
    width: 85%; 
}
.agileits-modal .close2 { 
    font-size: 0.9em; 
}
.agileits-modal h5 { 
    margin: 0 0 1em; 
}
.w3ls-header-left p {
    font-size: 0.8em;
}
.w3ls-header-right ul li a.dropdown-toggle {
    font-size: 0.85em; 
}
.agileits-modal select.form-control.bfh-states,.agileits-modal input[type="text"]{ 
    font-size: 0.9em; 
}
.header-search, .header-two.scroll-to-fixed-fixed .header-search {
    margin: 1.2em .5em 0;
    width: 43%;
}
.header-logo h1, .header-two.scroll-to-fixed-fixed .header-logo h1 {
    font-size: 1.8em;
}
.header-logo h6 {
    font-size: 0.65em; 
}
.header-search input[type="search"] { 
    font-size: 0.9em;
}
.header-search .btn-default, .header-two.scroll-to-fixed-fixed .header-search .btn-default {
    width: 34px;
    height: 34px;
}
.w3view-cart i.fa {
    font-size: 1.2em;
}
.w3view-cart {
    width: 40px;
    height: 40px;
    padding: 0;
}
.my-account a {
    font-size: 0.85em;
}
.header-search input[type="search"], .header-two.scroll-to-fixed-fixed .header-search input[type="search"] {
    padding: 0.6em 3.5em 0.6em 0.8em;
}
.cd-dropdown-wrapper {
    display: block; 
}
.move-text {
    float: none;
    width: 100%; 
	padding: 0.2em;
}
.menu {
    width: 100%;
    text-align: center;
}
.marquee a { 
    letter-spacing: 1px; 
    font-size: 0.9em;
}
.glry-w3agile-grids:hover .view-caption {
    -webkit-transform: translate3d(-20%, 0px, 0px);
    -moz-transform: translate3d(-20%, 0px, 0px);
    -o-transform: translate3d(-20%, 0px, 0px);
    -ms-transform: translate3d(-20%, 0px, 0px);
    transform: translate3d(-20%, 0px, 0px);
} 
.glry-w3agile-grids img {
    width: 70%;
}
.glry-w3agile-grids .view-caption {
    padding: 10% 5% 10% 26%;
}
.glry-w3agile-grids .view-caption h5 { 
    line-height: 3.4em; 
}
.w3ls-add-grids a {
    padding: 1em 2em;
}
.w3ls-add-grids.w3ls-add-grids-mdl h4 {
    padding-top: 1em; 
}
.focus-grid { 
    width: 50%; 
}
.ftr-top-grids:nth-child(2) {
    margin: 1em 0;
}
.card-top-grids {
    padding: 0;
}
.soon h3 {
    font-size: 1.8em;
}
.soon h4 {
    font-size: 1.5em; 
}
.ClassyCountdown-wrapper .ClassyCountdown-value span {
    font-size: 0.7em !important;
}
.soon {
    padding: 2em 0;
}
.footer-grids ul li { 
    font-size: 0.9em; 
}
.footer {
    padding: 3em 0 6em;
}
.address-right:before {
    bottom: -84px;
    height: 70px;
    left: 15%;
    width: 242px;
}
.welcome .bs-example-tabs ul.nav-tabs li {
    margin: 0 0.8em;
} 
.welcome .bs-example.bs-example-tabs .nav-tabs {
    border: none;
    margin: 0;
}
#PPsbmincart {
    left: 27%;
    top: 29%;
    width: 315px;
}
#PPsbmincart .sbmincart-closer { 
    margin: -15px -8px 0;
    padding: 0 10px; 
    font-size: 20px; 
}
#PPsbmincart ul { 
    padding: 0.5em;  
	margin: 5px 0 15px;
}
#PPsbmincart form { 
    padding: 1em 1em .3em;
}
#PPsbmincart form ul { 
    max-height: 250px;
}
#PPsbmincart .sbmincart-item { 
    font-size: 0.9em;
}
#PPsbmincart .sbmincart-remove { 
    height: 18px; 
    font-size: 13px; 
}
#PPsbmincart .sbmincart-subtotal { 
    font-size: 15px; 
} 
.w3ls-add-grids h6 {
    font-size: 1.1em; 
    margin: 1em 0; 
}
.w3ls-add-grids {
    min-height: 135px; 
}
.login-body {
    width: 80%;
    padding: 1.5em;
}
h3.w3ls-title.w3ls-title1 {
    font-size: 1.6em;
    margin: 0 0 1em;
}
.login-page input[type="text"], .login-page input[type="password"],.login-page input[type="submit"]{
    font-size: 0.9em;
    padding: 0.8em 1em; 
}
.offer-card-grids {
    width: 80%; 
}
.offer-bottom-grids h4 {
    font-size: 2.5em;
}
.offer-bottom-grids-info, .offer-bottom-grids-info2 {
    min-height: 155px; 
}
.contact input[type="text"] {
    margin-bottom: 0.5em;
    font-size: 0.9em;
    width: 100%;
    float: none;
}
.contact input[type="submit"] { 
    font-size: 0.9em; 
}
.subscribe h4 {
    font-size: 1.2em; 
    margin-bottom: 0.5em; 
}
.agile-card-top {
    padding: 1em 0.5em;
}
.card-top-grids h5 {
    font-size: 0.9em;
}
.card-top-grids h4 {
    font-size: 2em;
}
.agile-card-text h5 {
    margin: 1em 0 0.3em;
}
.agile-card-text h5, .faq-w3agile h5 {
    font-size: 1.2em; 
}
p {
    font-size: 0.9em; 
}
.help .header-search input[type="search"] {
    padding: 0.8em 8em 0.8em 0.8em;
}
.faq-w3agile ul.faq {
    padding-left: 1em;
}
.faq > li > a { 
    font-size: 0.9em; 
}
.services-grids h4, .about-text-grids h4 {
    font-size: 0.9em;
}
.ftr-top-left { 
    width: 25%;
}
.services-grids { 
    width: 50%; 
}
.sitemap-tabs ul li {
    width: 47%; 
}
.sitemap-tabs.affix ul li a { 
    font-size: .9em;
}
.sitemap-tabs.affix ul li { 
    width: 32%;
}
.affix ~ .sitemap-text {
    padding: 11.1em 0 0;
}
.sitemap-text ul li a { 
    font-size: .9em;
}
h3.w3sitemap-title i.fa { 
    width: 40px;
    height: 40px; 
}
h3.w3sitemap-title {
    font-size: 1.2em;
}
.sitemap-text-grids { 
    width: 50%;
}
h3.w3ls-title.w3ls-title1 {
    font-size: 1.4em; 
}
.faq-w3agile .faq li {
    margin-top: 1em; 
}
.product-grids {
    width: 50%;
}
.imagezoom-view {
	display:none;
}
.single-top-left {
    margin-left: 27%;
    width: 70%;
}
.single-top-right .w3ls-cart {
    width: 27%;
}
.single-page-icons.social-icons {
    margin: 2em 0;
}
.collpse.tabs h4.panel-title a {
    font-size: 0.9em; 
}
.collpse.tabs .panel-body { 
    font-size: 0.9em;
}
.collpse.tabs {
    padding: 1em 0 1.5em;
}
.offer-bottom-grids {
    padding: 0;
}
.nav-tabs li a i.fa {
    font-size: 2.6em;
}
.nav-tabs li a h5 {
    font-size: 0.9em;
} 
.recommend {
    margin-top: 2em;
}
}
@media(max-width:414px){ 
.map-grids {
    padding: 0;
}
.contact-left {
    padding: 0;
}
.sitemap-tabs ul li {
    font-size: 0.9em;
}
.offer-card-grids {
    width: 100%;
    padding: 1em;
}
.offer-card-grids h4 {
    font-size: 2.2em;
}
.offer-card-row {
    margin: 2em 0;
}
.offer-bottom-grids h4 {
    font-size: 2em;
}
.offer-bottom-grids-info, .offer-bottom-grids-info2 {
    min-height: 130px;
}
ul.dropdown-menu { 
    min-width: 59px;
    font-size: 0.9em; 
}
.w3ls-header {
    padding: 0.5em 0em;
}
.header-search, .header-two.scroll-to-fixed-fixed .header-search {
    margin: 1.2em 0em 1.2em 1.5em;
    width: 69%;
}
.agileits-modal .modal-content {
    width: 90%;
}
.agileits-modal h4 {
    font-size: 1.3em;
}
.agileits-modal select.form-control.bfh-states { 
    height: 35px; 
}
.agileits-modal input[type="text"] { 
    margin: 0.8em 0; 
}
.header-cart {
    float: none; 
    width: 42%;
    margin: 0 auto; 
}
.welcome .bs-example-tabs ul.nav-tabs li {
    margin: 0 0.3em;
}
.nav-tabs li a i.fa {
    font-size: 2em;
}
.nav-tabs li a h5 {
    font-size: 0.85em;
}
#PPsbmincart {
    left: 8%;
    top: 28%; 
}
.header-two.scroll-to-fixed-fixed .header-cart {
    margin: 1em auto 0;
}
.glry-w3agile-grids img {
    width: 57%;
}
.owl-carousel .item { 
    width: 75%;
    margin: 1em auto;
}
.glry-w3agile-grids .view-caption h5 {
    line-height: 3.8em;
}
.w3ls-add-grids { 
    width: 100%; 
}
.subscribe {
    padding: 2em 0;
}
.subscribe-right,.social-icons { 
    padding: 0;
}
.subscribe input[type="text"] {
    width: 61%; 
    font-size: 0.9em; 
}
.subscribe input[type="submit"] { 
    font-size: 0.9em; 
}
.subscribe h4 {
    font-size: 1.1em; 
}
.footer-grids { 
    padding: .5em;
}
.footer h3 {
    font-size: 1em;
}
.footer-grids {
    padding: 0 0.9em;
}
.login-body {
    width: 90%; 
}
.login-page h6 { 
    margin: 1.5em 0 0;
}
.address-left ul li {  
    font-size: 0.9em; 
}
.values h5 {
    font-size: 1.1em;
    margin-bottom: 0.3em;
}
.w3values-grids h6 {
    font-size: 1.1em; 
    margin: 1em 0 .5em;
} 
}
@media(max-width:384px){
}
@media(max-width:375px){
.header-cart { 
    width: 50%;  
}
.header-search, .header-two.scroll-to-fixed-fixed .header-search {
    margin: 1.2em 0em 1.2em .5em;
}
h3.w3ls-title {
    font-size: 1.2em;
    margin: 0.6em 0;
}
.glry-w3agile-grids img {
    width: 57%;
} 
.w3ls-add-grids {  
	min-height: 109px;
}
.w3ls-add-grids h4 {
    font-size: 1.1em; 
	padding-top: 1em;
}
.w3ls-add-grids a {
    padding: 1em 1em;
}
.w3ls-add-grids.w3ls-add-grids-mdl h6 {
    margin: 0.6em 0;
}
.soon h3 {
    font-size: 1.6em;
}
.ClassyCountdownDemo {
    width: 85%; 
}
.soon h4 {
    margin: 0.5em 0;
}
.focus-grid {
    width: 100%;
    padding: 0;
} 
.focus-grid a { 
    padding: 1em 0;
}
.ftr-top-grids {
    padding: 0;
}
.w3agile-ftr-top .ftr-top-right {
    width: 79%;
} 
.footer-logo.header-logo h2 {
    font-size: 1.8em;
} 
.address-right {    
    margin-top: 1em; 
}
.footer-grids { 
    padding: .5em;
} 
.copy-right p {
    font-size: 0.9em; 
}
.copy-right {
    padding: 1em 0;
}
.history h3.w3ls-title {
    margin: 1em 0 0.5em;
} 
.product-top {
    padding: 0.5em 1em;
}
.product-top ul li a.dropdown-toggle { 
    padding: 0.2em 0;
    font-size: .9em;
}
.breadcrumb { 
    margin-bottom: 10px; 
}
.single-top-right h3 {
    font-size: 1.2em;
}
.single-price ul li:nth-child(1) {
    font-size: 1.5em; 
}
.single-price ul li span.w3off {
    font-size: 1em;
}
.single-top-right .w3ls-cart {
    width: 36%;
}
.single-page-icons.social-icons {
    margin: 1em 0;
}
.services-grids {
    width: 100%;
}
.w3values-row {
    margin-top: 1em;
}
.w3values-grids {
    padding: 0;
}
.w3values-grids h6 {
    font-size: 1.1em; 
    margin: 1em 0 .5em;
}
.privacy-w3row h5 {
    font-size: 1.1em; 
}
.sitemap-tabs.affix ul li a {
    font-size: .85em;
}
.header-two.scroll-to-fixed-fixed .header-cart {
    margin: 0 auto;
} 
.login-body {
    width: 100%;
}
.cart {
    margin-right: 1.5em;
    padding-right: 1.5em;
}
.login-page-bottom h5 {
    font-size: 0.9em; 
    margin: 0.9em 0; 
}
.w3ls-header-right ul.dropdown-menu {
    left: -15px;
}
.help .header-search { 
    width: 100%;
}
.card-top-grids i.fa {
    font-size: 2.2em;
}
.ftr-top-left {
    width: 50%;
    padding: 0;
}
.ftr-top-left.about-text-grids i.fa { 
    margin-top: 0.5em;
}
.history h3.w3ls-title {
    font-size: 1.3em;
}
.privacy-w3row h5 { 
    margin-top: 1em;
	line-height: 1.4em;
}
.contact h4 {
    font-size: 1.2em; 
}
.contact iframe {
    min-height: 8em;
    margin-bottom: 1em;
}
.contact input[type="submit"] { 
    margin: 0.5em 0 0 0; 
}
.cnt-w3agile-row i.fa {
    font-size: 1.5em; 
}
.single-top-right { 
    margin-top: 0;
}
.single-top-left {
    margin-left: 20%; 
}
.social-icons ul.apps li h4 {
    font-size: 0.9em; 
}
.social-icons ul.apps li a.fa {     
    font-size: 1.1em; 
}
}
@media(max-width:320px){
.header-search, .header-two.scroll-to-fixed-fixed .header-search { 
    width: 66%;
} 
.agile-card-text h5, .faq-w3agile h5 {
    font-size: 1.1em;
}
.agileits-modal .modal-content {
    width: 95%;
}
.header-cart {
    width: 60%;
}
.owl-carousel .item {
    width: 95%; 
}
.product-top h4 {
    font-size: 1em;
	float: none;
} 
.product-top li.dropdown { 
    float: none; 
    text-align: center;
}
.product-grids {
    width: 90%;
    margin: 1em auto 0;
    float: none;
}
#PPsbmincart {
    left: 3%; 
    width: 290px;
}
.single-top-right .w3ls-cart {
    width: 46%;
}
.icon { 
    margin: 2px;
    width: 30px;
    height: 30px; 
}
.social-icons ul li a.fa.icon {
    font-size: 0.9em; 
    line-height: 2.1em; 
}
.login-body { 
    padding: 1em;
}
.w3ls-header-right .dropdown-menu li  a{ 
    padding: 3px 8px; 
}
.w3ls-header-right ul li a.dropdown-toggle {
    font-size: 0.8em;
}
.w3ls-header-right ul.dropdown-menu {
    left: -8px;
}
h3.w3ls-title.w3ls-title1 {
    font-size: 1.3em;
}
.w3ls-add-grids.w3agile-add-products { 
    margin: 1em 0; 
}
.offer-card-row {
    margin: 1em 0;
}
.card-top-grids { 
    float: none;
    width: 100%;
}
.card-top-grids h5 { 
    margin-top: 0.5em;
}
.card-top-grids:nth-child(2) { 
    margin: 1em 0;
}
.footer-grids {
    float: none;
    width: 100%;
}
.footer-grids:nth-child(2) {
    margin: 1em 0;
}
.nav-tabs li a i.fa {
    font-size: 1.5em;
}
.welcome .bs-example-tabs ul.nav-tabs li {
    margin: 0 0 0 .3em;
}
.welcome .bs-example-tabs ul.nav-tabs li:nth-child(1) {
    margin: 0;
}
.sitemap-tabs ul li {
    width: 47%;
    margin: 0.2em;
    font-size: 0.85em;
}
}
/*-- //responsive-design --*/

Open in new window


cart.js

/
*!
 * mincart
 * The Mini Cart is a great way to improve your PayPal shopping cart integration.
 *
 * @version 3.0.6
 * @author Jeff Harrell <https://github.com/jeffharrell/>
 * @url http://www.mincartjs.com/
 * @license MIT <https://github.com/jeffharrell/mincart/raw/master/LICENSE.md>
 */

;(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){


//
// The shims in this file are not fully implemented shims for the ES5
// features, but do work for the particular use cases there is in
// the other modules.
//

var toString = Object.prototype.toString;
var hasOwnProperty = Object.prototype.hasOwnProperty;

// Array.isArray is supported in IE9
function isArray(xs) {
  return toString.call(xs) === '[object Array]';
}
exports.isArray = typeof Array.isArray === 'function' ? Array.isArray : isArray;

// Array.prototype.indexOf is supported in IE9
exports.indexOf = function indexOf(xs, x) {
  if (xs.indexOf) return xs.indexOf(x);
  for (var i = 0; i < xs.length; i++) {
    if (x === xs[i]) return i;
  }
  return -1;
};

// Array.prototype.filter is supported in IE9
exports.filter = function filter(xs, fn) {
  if (xs.filter) return xs.filter(fn);
  var res = [];
  for (var i = 0; i < xs.length; i++) {
    if (fn(xs[i], i, xs)) res.push(xs[i]);
  }
  return res;
};

// Array.prototype.forEach is supported in IE9
exports.forEach = function forEach(xs, fn, self) {
  if (xs.forEach) return xs.forEach(fn, self);
  for (var i = 0; i < xs.length; i++) {
    fn.call(self, xs[i], i, xs);
  }
};

// Array.prototype.map is supported in IE9
exports.map = function map(xs, fn) {
  if (xs.map) return xs.map(fn);
  var out = new Array(xs.length);
  for (var i = 0; i < xs.length; i++) {
    out[i] = fn(xs[i], i, xs);
  }
  return out;
};

// Array.prototype.reduce is supported in IE9
exports.reduce = function reduce(array, callback, opt_initialValue) {
  if (array.reduce) return array.reduce(callback, opt_initialValue);
  var value, isValueSet = false;

  if (2 < arguments.length) {
    value = opt_initialValue;
    isValueSet = true;
  }
  for (var i = 0, l = array.length; l > i; ++i) {
    if (array.hasOwnProperty(i)) {
      if (isValueSet) {
        value = callback(value, array[i], i, array);
      }
      else {
        value = array[i];
        isValueSet = true;
      }
    }
  }

  return value;
};

// String.prototype.substr - negative index don't work in IE8
if ('ab'.substr(-1) !== 'b') {
  exports.substr = function (str, start, length) {
    // did we get a negative start, calculate how much it is from the beginning of the string
    if (start < 0) start = str.length + start;

    // call the original function
    return str.substr(start, length);
  };
} else {
  exports.substr = function (str, start, length) {
    return str.substr(start, length);
  };
}

// String.prototype.trim is supported in IE9
exports.trim = function (str) {
  if (str.trim) return str.trim();
  return str.replace(/^\s+|\s+$/g, '');
};

// Function.prototype.bind is supported in IE9
exports.bind = function () {
  var args = Array.prototype.slice.call(arguments);
  var fn = args.shift();
  if (fn.bind) return fn.bind.apply(fn, args);
  var self = args.shift();
  return function () {
    fn.apply(self, args.concat([Array.prototype.slice.call(arguments)]));
  };
};

// Object.create is supported in IE9
function create(prototype, properties) {
  var object;
  if (prototype === null) {
    object = { '__proto__' : null };
  }
  else {
    if (typeof prototype !== 'object') {
      throw new TypeError(
        'typeof prototype[' + (typeof prototype) + '] != \'object\''
      );
    }
    var Type = function () {};
    Type.prototype = prototype;
    object = new Type();
    object.__proto__ = prototype;
  }
  if (typeof properties !== 'undefined' && Object.defineProperties) {
    Object.defineProperties(object, properties);
  }
  return object;
}
exports.create = typeof Object.create === 'function' ? Object.create : create;

// Object.keys and Object.getOwnPropertyNames is supported in IE9 however
// they do show a description and number property on Error objects
function notObject(object) {
  return ((typeof object != "object" && typeof object != "function") || object === null);
}

function keysShim(object) {
  if (notObject(object)) {
    throw new TypeError("Object.keys called on a non-object");
  }

  var result = [];
  for (var name in object) {
    if (hasOwnProperty.call(object, name)) {
      result.push(name);
    }
  }
  return result;
}

// getOwnPropertyNames is almost the same as Object.keys one key feature
//  is that it returns hidden properties, since that can't be implemented,
//  this feature gets reduced so it just shows the length property on arrays
function propertyShim(object) {
  if (notObject(object)) {
    throw new TypeError("Object.getOwnPropertyNames called on a non-object");
  }

  var result = keysShim(object);
  if (exports.isArray(object) && exports.indexOf(object, 'length') === -1) {
    result.push('length');
  }
  return result;
}

var keys = typeof Object.keys === 'function' ? Object.keys : keysShim;
var getOwnPropertyNames = typeof Object.getOwnPropertyNames === 'function' ?
  Object.getOwnPropertyNames : propertyShim;

if (new Error().hasOwnProperty('description')) {
  var ERROR_PROPERTY_FILTER = function (obj, array) {
    if (toString.call(obj) === '[object Error]') {
      array = exports.filter(array, function (name) {
        return name !== 'description' && name !== 'number' && name !== 'message';
      });
    }
    return array;
  };

  exports.keys = function (object) {
    return ERROR_PROPERTY_FILTER(object, keys(object));
  };
  exports.getOwnPropertyNames = function (object) {
    return ERROR_PROPERTY_FILTER(object, getOwnPropertyNames(object));
  };
} else {
  exports.keys = keys;
  exports.getOwnPropertyNames = getOwnPropertyNames;
}

// Object.getOwnPropertyDescriptor - supported in IE8 but only on dom elements
function valueObject(value, key) {
  return { value: value[key] };
}

if (typeof Object.getOwnPropertyDescriptor === 'function') {
  try {
    Object.getOwnPropertyDescriptor({'a': 1}, 'a');
    exports.getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
  } catch (e) {
    // IE8 dom element issue - use a try catch and default to valueObject
    exports.getOwnPropertyDescriptor = function (value, key) {
      try {
        return Object.getOwnPropertyDescriptor(value, key);
      } catch (e) {
        return valueObject(value, key);
      }
    };
  }
} else {
  exports.getOwnPropertyDescriptor = valueObject;
}

},{}],2:[function(require,module,exports){

// not implemented
// The reason for having an empty file and not throwing is to allow
// untraditional implementation of this module.

},{}],3:[function(require,module,exports){
var process=require("__browserify_process");// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

var util = require('util');
var shims = require('_shims');

// resolves . and .. elements in a path array with directory names there
// must be no slashes, empty elements, or device names (c:\) in the array
// (so also no leading and trailing slashes - it does not distinguish
// relative and absolute paths)
function normalizeArray(parts, allowAboveRoot) {
  // if the path tries to go above the root, `up` ends up > 0
  var up = 0;
  for (var i = parts.length - 1; i >= 0; i--) {
    var last = parts[i];
    if (last === '.') {
      parts.splice(i, 1);
    } else if (last === '..') {
      parts.splice(i, 1);
      up++;
    } else if (up) {
      parts.splice(i, 1);
      up--;
    }
  }

  // if the path is allowed to go above the root, restore leading ..s
  if (allowAboveRoot) {
    for (; up--; up) {
      parts.unshift('..');
    }
  }

  return parts;
}

// Split a filename into [root, dir, basename, ext], unix version
// 'root' is just a slash, or nothing.
var splitPathRe =
    /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
var splitPath = function(filename) {
  return splitPathRe.exec(filename).slice(1);
};

// path.resolve([from ...], to)
// posix version
exports.resolve = function() {
  var resolvedPath = '',
      resolvedAbsolute = false;

  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
    var path = (i >= 0) ? arguments[i] : process.cwd();

    // Skip empty and invalid entries
    if (!util.isString(path)) {
      throw new TypeError('Arguments to path.resolve must be strings');
    } else if (!path) {
      continue;
    }

    resolvedPath = path + '/' + resolvedPath;
    resolvedAbsolute = path.charAt(0) === '/';
  }

  // At this point the path should be resolved to a full absolute path, but
  // handle relative paths to be safe (might happen when process.cwd() fails)

  // Normalize the path
  resolvedPath = normalizeArray(shims.filter(resolvedPath.split('/'), function(p) {
    return !!p;
  }), !resolvedAbsolute).join('/');

  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
};

// path.normalize(path)
// posix version
exports.normalize = function(path) {
  var isAbsolute = exports.isAbsolute(path),
      trailingSlash = shims.substr(path, -1) === '/';

  // Normalize the path
  path = normalizeArray(shims.filter(path.split('/'), function(p) {
    return !!p;
  }), !isAbsolute).join('/');

  if (!path && !isAbsolute) {
    path = '.';
  }
  if (path && trailingSlash) {
    path += '/';
  }

  return (isAbsolute ? '/' : '') + path;
};

// posix version
exports.isAbsolute = function(path) {
  return path.charAt(0) === '/';
};

// posix version
exports.join = function() {
  var paths = Array.prototype.slice.call(arguments, 0);
  return exports.normalize(shims.filter(paths, function(p, index) {
    if (!util.isString(p)) {
      throw new TypeError('Arguments to path.join must be strings');
    }
    return p;
  }).join('/'));
};


// path.relative(from, to)
// posix version
exports.relative = function(from, to) {
  from = exports.resolve(from).substr(1);
  to = exports.resolve(to).substr(1);

  function trim(arr) {
    var start = 0;
    for (; start < arr.length; start++) {
      if (arr[start] !== '') break;
    }

    var end = arr.length - 1;
    for (; end >= 0; end--) {
      if (arr[end] !== '') break;
    }

    if (start > end) return [];
    return arr.slice(start, end - start + 1);
  }

  var fromParts = trim(from.split('/'));
  var toParts = trim(to.split('/'));

  var length = Math.min(fromParts.length, toParts.length);
  var samePartsLength = length;
  for (var i = 0; i < length; i++) {
    if (fromParts[i] !== toParts[i]) {
      samePartsLength = i;
      break;
    }
  }

  var outputParts = [];
  for (var i = samePartsLength; i < fromParts.length; i++) {
    outputParts.push('..');
  }

  outputParts = outputParts.concat(toParts.slice(samePartsLength));

  return outputParts.join('/');
};

exports.sep = '/';
exports.delimiter = ':';

exports.dirname = function(path) {
  var result = splitPath(path),
      root = result[0],
      dir = result[1];

  if (!root && !dir) {
    // No dirname whatsoever
    return '.';
  }

  if (dir) {
    // It has a dirname, strip trailing slash
    dir = dir.substr(0, dir.length - 1);
  }

  return root + dir;
};


exports.basename = function(path, ext) {
  var f = splitPath(path)[2];
  // TODO: make this comparison case-insensitive on windows?
  if (ext && f.substr(-1 * ext.length) === ext) {
    f = f.substr(0, f.length - ext.length);
  }
  return f;
};


exports.extname = function(path) {
  return splitPath(path)[3];
};

},{"__browserify_process":5,"_shims":1,"util":4}],4:[function(require,module,exports){
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.

var shims = require('_shims');

var formatRegExp = /%[sdj%]/g;
exports.format = function(f) {
  if (!isString(f)) {
    var objects = [];
    for (var i = 0; i < arguments.length; i++) {
      objects.push(inspect(arguments[i]));
    }
    return objects.join(' ');
  }

  var i = 1;
  var args = arguments;
  var len = args.length;
  var str = String(f).replace(formatRegExp, function(x) {
    if (x === '%%') return '%';
    if (i >= len) return x;
    switch (x) {
      case '%s': return String(args[i++]);
      case '%d': return Number(args[i++]);
      case '%j':
        try {
          return JSON.stringify(args[i++]);
        } catch (_) {
          return '[Circular]';
        }
      default:
        return x;
    }
  });
  for (var x = args[i]; i < len; x = args[++i]) {
    if (isNull(x) || !isObject(x)) {
      str += ' ' + x;
    } else {
      str += ' ' + inspect(x);
    }
  }
  return str;
};

/**
 * Echos the value of a value. Trys to print the value out
 * in the best way possible given the different types.
 *
 * @param {Object} obj The object to print out.
 * @param {Object} opts Optional options object that alters the output.
 */
/* legacy: obj, showHidden, depth, colors*/
function inspect(obj, opts) {
  // default options
  var ctx = {
    seen: [],
    stylize: stylizeNoColor
  };
  // legacy...
  if (arguments.length >= 3) ctx.depth = arguments[2];
  if (arguments.length >= 4) ctx.colors = arguments[3];
  if (isBoolean(opts)) {
    // legacy...
    ctx.showHidden = opts;
  } else if (opts) {
    // got an "options" object
    exports._extend(ctx, opts);
  }
  // set default options
  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
  if (isUndefined(ctx.depth)) ctx.depth = 2;
  if (isUndefined(ctx.colors)) ctx.colors = false;
  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
  if (ctx.colors) ctx.stylize = stylizeWithColor;
  return formatValue(ctx, obj, ctx.depth);
}
exports.inspect = inspect;


// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
inspect.colors = {
  'bold' : [1, 22],
  'italic' : [3, 23],
  'underline' : [4, 24],
  'inverse' : [7, 27],
  'white' : [37, 39],
  'grey' : [90, 39],
  'black' : [30, 39],
  'blue' : [34, 39],
  'cyan' : [36, 39],
  'green' : [32, 39],
  'magenta' : [35, 39],
  'red' : [31, 39],
  'yellow' : [33, 39]
};

// Don't use 'blue' not visible on cmd.exe
inspect.styles = {
  'special': 'cyan',
  'number': 'yellow',
  'boolean': 'yellow',
  'undefined': 'grey',
  'null': 'bold',
  'string': 'green',
  'date': 'magenta',
  // "name": intentionally not styling
  'regexp': 'red'
};


function stylizeWithColor(str, styleType) {
  var style = inspect.styles[styleType];

  if (style) {
    return '\u001b[' + inspect.colors[style][0] + 'm' + str +
           '\u001b[' + inspect.colors[style][1] + 'm';
  } else {
    return str;
  }
}


function stylizeNoColor(str, styleType) {
  return str;
}


function arrayToHash(array) {
  var hash = {};

  shims.forEach(array, function(val, idx) {
    hash[val] = true;
  });

  return hash;
}


function formatValue(ctx, value, recurseTimes) {
  // Provide a hook for user-specified inspect functions.
  // Check that value is an object with an inspect function on it
  if (ctx.customInspect &&
      value &&
      isFunction(value.inspect) &&
      // Filter out the util module, it's inspect function is special
      value.inspect !== exports.inspect &&
      // Also filter out any prototype objects using the circular check.
      !(value.constructor && value.constructor.prototype === value)) {
    var ret = value.inspect(recurseTimes);
    if (!isString(ret)) {
      ret = formatValue(ctx, ret, recurseTimes);
    }
    return ret;
  }

  // Primitive types cannot have properties
  var primitive = formatPrimitive(ctx, value);
  if (primitive) {
    return primitive;
  }

  // Look up the keys of the object.
  var keys = shims.keys(value);
  var visibleKeys = arrayToHash(keys);

  if (ctx.showHidden) {
    keys = shims.getOwnPropertyNames(value);
  }

  // Some type of object without properties can be shortcutted.
  if (keys.length === 0) {
    if (isFunction(value)) {
      var name = value.name ? ': ' + value.name : '';
      return ctx.stylize('[Function' + name + ']', 'special');
    }
    if (isRegExp(value)) {
      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
    }
    if (isDate(value)) {
      return ctx.stylize(Date.prototype.toString.call(value), 'date');
    }
    if (isError(value)) {
      return formatError(value);
    }
  }

  var base = '', array = false, braces = ['{', '}'];

  // Make Array say that they are Array
  if (isArray(value)) {
    array = true;
    braces = ['[', ']'];
  }

  // Make functions say that they are functions
  if (isFunction(value)) {
    var n = value.name ? ': ' + value.name : '';
    base = ' [Function' + n + ']';
  }

  // Make RegExps say that they are RegExps
  if (isRegExp(value)) {
    base = ' ' + RegExp.prototype.toString.call(value);
  }

  // Make dates with properties first say the date
  if (isDate(value)) {
    base = ' ' + Date.prototype.toUTCString.call(value);
  }

  // Make error with message first say the error
  if (isError(value)) {
    base = ' ' + formatError(value);
  }

  if (keys.length === 0 && (!array || value.length == 0)) {
    return braces[0] + base + braces[1];
  }

  if (recurseTimes < 0) {
    if (isRegExp(value)) {
      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
    } else {
      return ctx.stylize('[Object]', 'special');
    }
  }

  ctx.seen.push(value);

  var output;
  if (array) {
    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
  } else {
    output = keys.map(function(key) {
      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
    });
  }

  ctx.seen.pop();

  return reduceToSingleString(output, base, braces);
}


function formatPrimitive(ctx, value) {
  if (isUndefined(value))
    return ctx.stylize('undefined', 'undefined');
  if (isString(value)) {
    var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
                                             .replace(/'/g, "\\'")
                                             .replace(/\\"/g, '"') + '\'';
    return ctx.stylize(simple, 'string');
  }
  if (isNumber(value))
    return ctx.stylize('' + value, 'number');
  if (isBoolean(value))
    return ctx.stylize('' + value, 'boolean');
  // For some reason typeof null is "object", so special case here.
  if (isNull(value))
    return ctx.stylize('null', 'null');
}


function formatError(value) {
  return '[' + Error.prototype.toString.call(value) + ']';
}


function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
  var output = [];
  for (var i = 0, l = value.length; i < l; ++i) {
    if (hasOwnProperty(value, String(i))) {
      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
          String(i), true));
    } else {
      output.push('');
    }
  }

  shims.forEach(keys, function(key) {
    if (!key.match(/^\d+$/)) {
      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
          key, true));
    }
  });
  return output;
}


function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
  var name, str, desc;
  desc = shims.getOwnPropertyDescriptor(value, key) || { value: value[key] };
  if (desc.get) {
    if (desc.set) {
      str = ctx.stylize('[Getter/Setter]', 'special');
    } else {
      str = ctx.stylize('[Getter]', 'special');
    }
  } else {
    if (desc.set) {
      str = ctx.stylize('[Setter]', 'special');
    }
  }

  if (!hasOwnProperty(visibleKeys, key)) {
    name = '[' + key + ']';
  }
  if (!str) {
    if (shims.indexOf(ctx.seen, desc.value) < 0) {
      if (isNull(recurseTimes)) {
        str = formatValue(ctx, desc.value, null);
      } else {
        str = formatValue(ctx, desc.value, recurseTimes - 1);
      }
      if (str.indexOf('\n') > -1) {
        if (array) {
          str = str.split('\n').map(function(line) {
            return '  ' + line;
          }).join('\n').substr(2);
        } else {
          str = '\n' + str.split('\n').map(function(line) {
            return '   ' + line;
          }).join('\n');
        }
      }
    } else {
      str = ctx.stylize('[Circular]', 'special');
    }
  }
  if (isUndefined(name)) {
    if (array && key.match(/^\d+$/)) {
      return str;
    }
    name = JSON.stringify('' + key);
    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
      name = name.substr(1, name.length - 2);
      name = ctx.stylize(name, 'name');
    } else {
      name = name.replace(/'/g, "\\'")
                 .replace(/\\"/g, '"')
                 .replace(/(^"|"$)/g, "'");
      name = ctx.stylize(name, 'string');
    }
  }

  return name + ': ' + str;
}


function reduceToSingleString(output, base, braces) {
  var numLinesEst = 0;
  var length = shims.reduce(output, function(prev, cur) {
    numLinesEst++;
    if (cur.indexOf('\n') >= 0) numLinesEst++;
    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
  }, 0);

  if (length > 60) {
    return braces[0] +
           (base === '' ? '' : base + '\n ') +
           ' ' +
           output.join(',\n  ') +
           ' ' +
           braces[1];
  }

  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
}


// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray(ar) {
  return shims.isArray(ar);
}
exports.isArray = isArray;

function isBoolean(arg) {
  return typeof arg === 'boolean';
}
exports.isBoolean = isBoolean;

function isNull(arg) {
  return arg === null;
}
exports.isNull = isNull;

function isNullOrUndefined(arg) {
  return arg == null;
}
exports.isNullOrUndefined = isNullOrUndefined;

function isNumber(arg) {
  return typeof arg === 'number';
}
exports.isNumber = isNumber;

function isString(arg) {
  return typeof arg === 'string';
}
exports.isString = isString;

function isSymbol(arg) {
  return typeof arg === 'symbol';
}
exports.isSymbol = isSymbol;

function isUndefined(arg) {
  return arg === void 0;
}
exports.isUndefined = isUndefined;

function isRegExp(re) {
  return isObject(re) && objectToString(re) === '[object RegExp]';
}
exports.isRegExp = isRegExp;

function isObject(arg) {
  return typeof arg === 'object' && arg;
}
exports.isObject = isObject;

function isDate(d) {
  return isObject(d) && objectToString(d) === '[object Date]';
}
exports.isDate = isDate;

function isError(e) {
  return isObject(e) && objectToString(e) === '[object Error]';
}
exports.isError = isError;

function isFunction(arg) {
  return typeof arg === 'function';
}
exports.isFunction = isFunction;

function isPrimitive(arg) {
  return arg === null ||
         typeof arg === 'boolean' ||
         typeof arg === 'number' ||
         typeof arg === 'string' ||
         typeof arg === 'symbol' ||  // ES6 symbol
         typeof arg === 'undefined';
}
exports.isPrimitive = isPrimitive;

function isBuffer(arg) {
  return arg && typeof arg === 'object'
    && typeof arg.copy === 'function'
    && typeof arg.fill === 'function'
    && typeof arg.binarySlice === 'function'
  ;
}
exports.isBuffer = isBuffer;

function objectToString(o) {
  return Object.prototype.toString.call(o);
}


function pad(n) {
  return n < 10 ? '0' + n.toString(10) : n.toString(10);
}


var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
              'Oct', 'Nov', 'Dec'];

// 26 Feb 16:19:34
function timestamp() {
  var d = new Date();
  var time = [pad(d.getHours()),
              pad(d.getMinutes()),
              pad(d.getSeconds())].join(':');
  return [d.getDate(), months[d.getMonth()], time].join(' ');
}


// log is just a thin wrapper to console.log that prepends a timestamp
exports.log = function() {
  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
};


/**
 * Inherit the prototype methods from one constructor into another.
 *
 * The Function.prototype.inherits from lang.js rewritten as a standalone
 * function (not on Function.prototype). NOTE: If this file is to be loaded
 * during bootstrapping this function needs to be rewritten using some native
 * functions as prototype setup using normal JavaScript does not work as
 * expected during bootstrapping (see mirror.js in r114903).
 *
 * @param {function} ctor Constructor function which needs to inherit the
 *     prototype.
 * @param {function} superCtor Constructor function to inherit prototype from.
 */
exports.inherits = function(ctor, superCtor) {
  ctor.super_ = superCtor;
  ctor.prototype = shims.create(superCtor.prototype, {
    constructor: {
      value: ctor,
      enumerable: false,
      writable: true,
      configurable: true
    }
  });
};

exports._extend = function(origin, add) {
  // Don't do anything if add isn't an object
  if (!add || !isObject(add)) return origin;

  var keys = shims.keys(add);
  var i = keys.length;
  while (i--) {
    origin[keys[i]] = add[keys[i]];
  }
  return origin;
};

function hasOwnProperty(obj, prop) {
  return Object.prototype.hasOwnProperty.call(obj, prop);
}

},{"_shims":1}],5:[function(require,module,exports){
// shim for using process in browser

var process = module.exports = {};

process.nextTick = (function () {
    var canSetImmediate = typeof window !== 'undefined'
    && window.setImmediate;
    var canPost = typeof window !== 'undefined'
    && window.postMessage && window.addEventListener
    ;

    if (canSetImmediate) {
        return function (f) { return window.setImmediate(f) };
    }

    if (canPost) {
        var queue = [];
        window.addEventListener('message', function (ev) {
            var source = ev.source;
            if ((source === window || source === null) && ev.data === 'process-tick') {
                ev.stopPropagation();
                if (queue.length > 0) {
                    var fn = queue.shift();
                    fn();
                }
            }
        }, true);

        return function nextTick(fn) {
            queue.push(fn);
            window.postMessage('process-tick', '*');
        };
    }

    return function nextTick(fn) {
        setTimeout(fn, 0);
    };
})();

process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];

process.binding = function (name) {
    throw new Error('process.binding is not supported');
}

// TODO(shtylman)
process.cwd = function () { return '/' };
process.chdir = function (dir) {
    throw new Error('process.chdir is not supported');
};

},{}],6:[function(require,module,exports){

/*!
 * EJS
 * Copyright(c) 2012 TJ Holowaychuk <tj@vision-media.ca>
 * MIT Licensed
 */

/**
 * Module dependencies.
 */

var utils = require('./utils')
  , path = require('path')
  , dirname = path.dirname
  , extname = path.extname
  , join = path.join
  , fs = require('fs')
  , read = fs.readFileSync;

/**
 * Filters.
 *
 * @type Object
 */

var filters = exports.filters = require('./filters');

/**
 * Intermediate js cache.
 *
 * @type Object
 */

var cache = {};

/**
 * Clear intermediate js cache.
 *
 * @api public
 */

exports.clearCache = function(){
  cache = {};
};

/**
 * Translate filtered code into function calls.
 *
 * @param {String} js
 * @return {String}
 * @api private
 */

function filtered(js) {
  return js.substr(1).split('|').reduce(function(js, filter){
    var parts = filter.split(':')
      , name = parts.shift()
      , args = parts.join(':') || '';
    if (args) args = ', ' + args;
    return 'filters.' + name + '(' + js + args + ')';
  });
};

/**
 * Re-throw the given `err` in context to the
 * `str` of ejs, `filename`, and `lineno`.
 *
 * @param {Error} err
 * @param {String} str
 * @param {String} filename
 * @param {String} lineno
 * @api private
 */

function rethrow(err, str, filename, lineno){
  var lines = str.split('\n')
    , start = Math.max(lineno - 3, 0)
    , end = Math.min(lines.length, lineno + 3);

  // Error context
  var context = lines.slice(start, end).map(function(line, i){
    var curr = i + start + 1;
    return (curr == lineno ? ' >> ' : '    ')
      + curr
      + '| '
      + line;
  }).join('\n');

  // Alter exception message
  err.path = filename;
  err.message = (filename || 'ejs') + ':'
    + lineno + '\n'
    + context + '\n\n'
    + err.message;
  
  throw err;
}

/**
 * Parse the given `str` of ejs, returning the function body.
 *
 * @param {String} str
 * @return {String}
 * @api public
 */

var parse = exports.parse = function(str, options){
  var options = options || {}
    , open = options.open || exports.open || '<%'
    , close = options.close || exports.close || '%>'
    , filename = options.filename
    , compileDebug = options.compileDebug !== false
    , buf = "";

  buf += 'var buf = [];';
  if (false !== options._with) buf += '\nwith (locals || {}) { (function(){ ';
  buf += '\n buf.push(\'';

  var lineno = 1;

  var consumeEOL = false;
  for (var i = 0, len = str.length; i < len; ++i) {
    var stri = str[i];
    if (str.slice(i, open.length + i) == open) {
      i += open.length
  
      var prefix, postfix, line = (compileDebug ? '__stack.lineno=' : '') + lineno;
      switch (str[i]) {
        case '=':
          prefix = "', escape((" + line + ', ';
          postfix = ")), '";
          ++i;
          break;
        case '-':
          prefix = "', (" + line + ', ';
          postfix = "), '";
          ++i;
          break;
        default:
          prefix = "');" + line + ';';
          postfix = "; buf.push('";
      }

      var end = str.indexOf(close, i)
        , js = str.substring(i, end)
        , start = i
        , include = null
        , n = 0;

      if ('-' == js[js.length-1]){
        js = js.substring(0, js.length - 2);
        consumeEOL = true;
      }

      if (0 == js.trim().indexOf('include')) {
        var name = js.trim().slice(7).trim();
        if (!filename) throw new Error('filename option is required for includes');
        var path = resolveInclude(name, filename);
        include = read(path, 'utf8');
        include = exports.parse(include, { filename: path, _with: false, open: open, close: close, compileDebug: compileDebug });
        buf += "' + (function(){" + include + "})() + '";
        js = '';
      }

      while (~(n = js.indexOf("\n", n))) n++, lineno++;
      if (js.substr(0, 1) == ':') js = filtered(js);
      if (js) {
        if (js.lastIndexOf('//') > js.lastIndexOf('\n')) js += '\n';
        buf += prefix;
        buf += js;
        buf += postfix;
      }
      i += end - start + close.length - 1;

    } else if (stri == "\\") {
      buf += "\\\\";
    } else if (stri == "'") {
      buf += "\\'";
    } else if (stri == "\r") {
      // ignore
    } else if (stri == "\n") {
      if (consumeEOL) {
        consumeEOL = false;
      } else {
        buf += "\\n";
        lineno++;
      }
    } else {
      buf += stri;
    }
  }

  if (false !== options._with) buf += "'); })();\n} \nreturn buf.join('');";
  else buf += "');\nreturn buf.join('');";
  return buf;
};

/**
 * Compile the given `str` of ejs into a `Function`.
 *
 * @param {String} str
 * @param {Object} options
 * @return {Function}
 * @api public
 */

var compile = exports.compile = function(str, options){
  options = options || {};
  var escape = options.escape || utils.escape;
  
  var input = JSON.stringify(str)
    , compileDebug = options.compileDebug !== false
    , client = options.client
    , filename = options.filename
        ? JSON.stringify(options.filename)
        : 'undefined';
  
  if (compileDebug) {
    // Adds the fancy stack trace meta info
    str = [
      'var __stack = { lineno: 1, input: ' + input + ', filename: ' + filename + ' };',
      rethrow.toString(),
      'try {',
      exports.parse(str, options),
      '} catch (err) {',
      '  rethrow(err, __stack.input, __stack.filename, __stack.lineno);',
      '}'
    ].join("\n");
  } else {
    str = exports.parse(str, options);
  }
  
  if (options.debug) console.log(str);
  if (client) str = 'escape = escape || ' + escape.toString() + ';\n' + str;

  try {
    var fn = new Function('locals, filters, escape, rethrow', str);
  } catch (err) {
    if ('SyntaxError' == err.name) {
      err.message += options.filename
        ? ' in ' + filename
        : ' while compiling ejs';
    }
    throw err;
  }

  if (client) return fn;

  return function(locals){
    return fn.call(this, locals, filters, escape, rethrow);
  }
};

/**
 * Render the given `str` of ejs.
 *
 * Options:
 *
 *   - `locals`          Local variables object
 *   - `cache`           Compiled functions are cached, requires `filename`
 *   - `filename`        Used by `cache` to key caches
 *   - `scope`           Function execution context
 *   - `debug`           Output generated function body
 *   - `open`            Open tag, defaulting to "<%"
 *   - `close`           Closing tag, defaulting to "%>"
 *
 * @param {String} str
 * @param {Object} options
 * @return {String}
 * @api public
 */

exports.render = function(str, options){
  var fn
    , options = options || {};

  if (options.cache) {
    if (options.filename) {
      fn = cache[options.filename] || (cache[options.filename] = compile(str, options));
    } else {
      throw new Error('"cache" option requires "filename".');
    }
  } else {
    fn = compile(str, options);
  }

  options.__proto__ = options.locals;
  return fn.call(options.scope, options);
};

/**
 * Render an EJS file at the given `path` and callback `fn(err, str)`.
 *
 * @param {String} path
 * @param {Object|Function} options or callback
 * @param {Function} fn
 * @api public
 */

exports.renderFile = function(path, options, fn){
  var key = path + ':string';

  if ('function' == typeof options) {
    fn = options, options = {};
  }

  options.filename = path;

  var str;
  try {
    str = options.cache
      ? cache[key] || (cache[key] = read(path, 'utf8'))
      : read(path, 'utf8');
  } catch (err) {
    fn(err);
    return;
  }
  fn(null, exports.render(str, options));
};

/**
 * Resolve include `name` relative to `filename`.
 *
 * @param {String} name
 * @param {String} filename
 * @return {String}
 * @api private
 */

function resolveInclude(name, filename) {
  var path = join(dirname(filename), name);
  var ext = extname(name);
  if (!ext) path += '.ejs';
  return path;
}

// express support

exports.__express = exports.renderFile;

/**
 * Expose to require().
 */

if (require.extensions) {
  require.extensions['.ejs'] = function (module, filename) {
    filename = filename || module.filename;
    var options = { filename: filename, client: true }
      , template = fs.readFileSync(filename).toString()
      , fn = compile(template, options);
    module._compile('module.exports = ' + fn.toString() + ';', filename);
  };
} else if (require.registerExtension) {
  require.registerExtension('.ejs', function(src) {
    return compile(src, {});
  });
}

},{"./filters":7,"./utils":8,"fs":2,"path":3}],7:[function(require,module,exports){
/*!
 * EJS - Filters
 * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
 * MIT Licensed
 */

/**
 * First element of the target `obj`.
 */

exports.first = function(obj) {
  return obj[0];
};

/**
 * Last element of the target `obj`.
 */

exports.last = function(obj) {
  return obj[obj.length - 1];
};

/**
 * Capitalize the first letter of the target `str`.
 */

exports.capitalize = function(str){
  str = String(str);
  return str[0].toUpperCase() + str.substr(1, str.length);
};

/**
 * Downcase the target `str`.
 */

exports.downcase = function(str){
  return String(str).toLowerCase();
};

/**
 * Uppercase the target `str`.
 */

exports.upcase = function(str){
  return String(str).toUpperCase();
};

/**
 * Sort the target `obj`.
 */

exports.sort = function(obj){
  return Object.create(obj).sort();
};

/**
 * Sort the target `obj` by the given `prop` ascending.
 */

exports.sort_by = function(obj, prop){
  return Object.create(obj).sort(function(a, b){
    a = a[prop], b = b[prop];
    if (a > b) return 1;
    if (a < b) return -1;
    return 0;
  });
};

/**
 * Size or length of the target `obj`.
 */

exports.size = exports.length = function(obj) {
  return obj.length;
};

/**
 * Add `a` and `b`.
 */

exports.plus = function(a, b){
  return Number(a) + Number(b);
};

/**
 * Subtract `b` from `a`.
 */

exports.minus = function(a, b){
  return Number(a) - Number(b);
};

/**
 * Multiply `a` by `b`.
 */

exports.times = function(a, b){
  return Number(a) * Number(b);
};

/**
 * Divide `a` by `b`.
 */

exports.divided_by = function(a, b){
  return Number(a) / Number(b);
};

/**
 * Join `obj` with the given `str`.
 */

exports.join = function(obj, str){
  return obj.join(str || ', ');
};

/**
 * Truncate `str` to `len`.
 */

exports.truncate = function(str, len, append){
  str = String(str);
  if (str.length > len) {
    str = str.slice(0, len);
    if (append) str += append;
  }
  return str;
};

/**
 * Truncate `str` to `n` words.
 */

exports.truncate_words = function(str, n){
  var str = String(str)
    , words = str.split(/ +/);
  return words.slice(0, n).join(' ');
};

/**
 * Replace `pattern` with `substitution` in `str`.
 */

exports.replace = function(str, pattern, substitution){
  return String(str).replace(pattern, substitution || '');
};

/**
 * Prepend `val` to `obj`.
 */

exports.prepend = function(obj, val){
  return Array.isArray(obj)
    ? [val].concat(obj)
    : val + obj;
};

/**
 * Append `val` to `obj`.
 */

exports.append = function(obj, val){
  return Array.isArray(obj)
    ? obj.concat(val)
    : obj + val;
};

/**
 * Map the given `prop`.
 */

exports.map = function(arr, prop){
  return arr.map(function(obj){
    return obj[prop];
  });
};

/**
 * Reverse the given `obj`.
 */

exports.reverse = function(obj){
  return Array.isArray(obj)
    ? obj.reverse()
    : String(obj).split('').reverse().join('');
};

/**
 * Get `prop` of the given `obj`.
 */

exports.get = function(obj, prop){
  return obj[prop];
};

/**
 * Packs the given `obj` into json string
 */
exports.json = function(obj){
  return JSON.stringify(obj);
};

},{}],8:[function(require,module,exports){

/*!
 * EJS
 * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
 * MIT Licensed
 */

/**
 * Escape the given string of `html`.
 *
 * @param {String} html
 * @return {String}
 * @api private
 */

exports.escape = function(html){
  return String(html)
    .replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/'/g, '&#39;')
    .replace(/"/g, '&quot;');
};
 

},{}],9:[function(require,module,exports){
'use strict';


var Product = require('./product'),
    Pubsub = require('./util/pubsub'),
    Storage = require('./util/storage'),
    constants = require('./constants'),
    currency = require('./util/currency'),
    mixin = require('./util/mixin');



/**
 * Renders the Mini Cart to the page's DOM.
 *
 * @constructor
 * @param {string} name Name of the cart (used as a key for storage)
 * @param {duration} number Time in milliseconds that the cart data should persist
 */
function Cart(name, duration) {
    var data, items, settings, len, i;

    this._items = [];
    this._settings = { bn: constants.BN };

    Pubsub.call(this);
    Storage.call(this, name, duration);

    if ((data = this.load())) {
        items = data.items;
        settings = data.settings;

        if (settings) {
            this._settings = settings;
        }

        if (items) {
            for (i = 0, len = items.length; i < len; i++) {
                this.add(items[i]);
            }
        }
    }
}


mixin(Cart.prototype, Pubsub.prototype);
mixin(Cart.prototype, Storage.prototype);


/**
 * Adds an item to the cart. This fires an "add" event.
 *
 * @param {object} data Item data
 * @return {number} Item location in the cart
 */
Cart.prototype.add = function add(data) {
    var that = this,
        items = this.items(),
        idx = false,
        isExisting = false,
        product, key, len, i;

    // Prune cart settings data from the product
    for (key in data) {
        if (constants.SETTINGS.test(key)) {
            this._settings[key] = data[key];
            delete data[key];
        }
    }

    // Look to see if the same product has already been added
    for (i = 0, len = items.length; i < len; i++) {
        if (items[i].isEqual(data)) {
            product = items[i];
            product.set('quantity', product.get('quantity') + (parseInt(data.quantity, 10) || 1));
            idx = i;
            isExisting = true;
            break;
        }
    }

    // If not, then try to add it
    if (!product) {
        product = new Product(data);

        if (product.isValid()) {
            idx = (this._items.push(product) - 1);

            product.on('change', function (key, value) {
                that.save();
                that.fire('change', idx, key, value);
            });

            this.save();
        }
    }

    if (product) {
        this.fire('add', idx, product, isExisting);
    }

    return idx;
};


/**
 * Returns the carts current items.
 *
 * @param {number} idx (Optional) Returns only that item.
 * @return {array|object}
 */
Cart.prototype.items = function get(idx) {
    return (typeof idx === 'number') ? this._items[idx] : this._items;
};


/**
 * Returns the carts current settings.
 *
 * @param {string} name (Optional) Returns only that setting.
 * @return {array|string}
 */
Cart.prototype.settings = function settings(name) {
    return (name) ? this._settings[name] : this._settings;
};


/**
 * Returns the cart discount.
 *
 * @param {object} config (Optional) Currency formatting options.
 * @return {number|string}
 */
Cart.prototype.discount = function discount(config) {
    var result = parseFloat(this.settings('discount_amount_cart')) || 0;

    if (!result) {
        result = (parseFloat(this.settings('discount_rate_cart')) || 0) * this.subtotal() / 100;
    }

    config = config || {};
    config.currency = this.settings('currency_code');

    return currency(result, config);
};


/**
 * Returns the cart total without discounts.
 *
 * @param {object} config (Optional) Currency formatting options.
 * @return {number|string}
 */
Cart.prototype.subtotal = function subtotal(config) {
    var products = this.items(),
        result = 0,
        i, len;

    for (i = 0, len = products.length; i < len; i++) {
        result += products[i].total();
    }

    config = config || {};
    config.currency = this.settings('currency_code');

    return currency(result, config);
};


/**
 * Returns the cart total.
 *
 * @param {object} config (Optional) Currency formatting options.
 * @return {number|string}
 */
Cart.prototype.total = function total(config) {
    var result = 0;

    result += this.subtotal();
    result -= this.discount();

    config = config || {};
    config.currency = this.settings('currency_code');

    return currency(result, config);
};


/**
 * Remove an item from the cart. This fires a "remove" event.
 *
 * @param {number} idx Item index to remove.
 * @return {boolean}
 */
Cart.prototype.remove = function remove(idx) {
    var item = this._items.splice(idx, 1);

    if (this._items.length === 0) {
        this.destroy();
    }

    if (item) {
        this.save();
        this.fire('remove', idx, item[0]);
    }

    return !!item.length;
};


/**
 * Saves the cart data.
 */
Cart.prototype.save = function save() {
    var items = this.items(),
        settings = this.settings(),
        data = [],
        i, len;

    for (i = 0, len = items.length; i < len; i++) {
        data.push(items[i].get());
    }

    Storage.prototype.save.call(this, {
        items: data,
        settings: settings
    });
};


/**
 * Proxies the w3sb_checkout event
 * The assumption is the view triggers this and consumers subscribe to it
 *
 * @param {object} The initiating event
 */
Cart.prototype.w3sb_checkout = function w3sb_checkout(evt) {
    this.fire('w3sb_checkout', evt);
};


/**
 * Destroy the cart data. This fires a "destroy" event.
 */
Cart.prototype.destroy = function destroy() {
    Storage.prototype.destroy.call(this);

    this._items = [];
    this._settings = { bn: constants.BN };

    this.fire('destroy');
};




module.exports = Cart;

},{"./constants":11,"./product":13,"./util/currency":15,"./util/mixin":18,"./util/pubsub":19,"./util/storage":20}],10:[function(require,module,exports){
'use strict';


var mixin = require('./util/mixin');


var defaults = module.exports = {

    name: 'PPsbmincart',

    parent: (typeof document !== 'undefined') ? document.body : null,

    action: 'https://www.paypal.com/cgi-bin/webscr',

    target: '',

    duration: 30,

    template: '<%var items = cart.items();var settings = cart.settings();var hasItems = !!items.length;var priceFormat = { format: true, currency: cart.settings("currency_code") };var totalFormat = { format: true, showCode: true };%><form method="post" class="<% if (!hasItems) { %>sbmincart-empty<% } %>" action="<%= config.action %>" target="<%= config.target %>">    <button type="button" class="sbmincart-closer">&times;</button>    <ul>        <% for (var i= 0, idx = i + 1, len = items.length; i < len; i++, idx++) { %>        <li class="sbmincart-item">            <div class="sbmincart-details-name">                <a class="sbmincart-name" href="<%= items[i].get("href") %>"><%= items[i].get("w3ls_item") %></a>                <ul class="sbmincart-attributes">                    <% if (items[i].get("item_number")) { %>                    <li>                        <%= items[i].get("item_number") %>                        <input type="hidden" name="item_number_<%= idx %>" value="<%= items[i].get("item_number") %>" />                    </li>                    <% } %>                    <% if (items[i].discount()) { %>                    <li>                        <%= config.strings.discount %> <%= items[i].discount(priceFormat) %>                        <input type="hidden" name="discount_amount_<%= idx %>" value="<%= items[i].discount() %>" />                    </li>                    <% } %>                    <% for (var options = items[i].options(), j = 0, len2 = options.length; j < len2; j++) { %>                        <li>                            <%= options[j].key %>: <%= options[j].value %>                            <input type="hidden" name="on<%= j %>_<%= idx %>" value="<%= options[j].key %>" />                            <input type="hidden" name="os<%= j %>_<%= idx %>" value="<%= options[j].value %>" />                        </li>                    <% } %>                </ul>            </div>            <div class="sbmincart-details-quantity">                <input class="sbmincart-quantity" data-sbmincart-idx="<%= i %>" name="quantity_<%= idx %>" type="text" pattern="[0-9]*" value="<%= items[i].get("quantity") %>" autocomplete="off" />            </div>            <div class="sbmincart-details-remove">                <button type="button" class="sbmincart-remove" data-sbmincart-idx="<%= i %>">&times;</button>            </div>            <div class="sbmincart-details-price">                <span class="sbmincart-price"><%= items[i].total(priceFormat) %></span>            </div>            <input type="hidden" name="w3ls_item_<%= idx %>" value="<%= items[i].get("w3ls_item") %>" />            <input type="hidden" name="amount_<%= idx %>" value="<%= items[i].amount() %>" />            <input type="hidden" name="shipping_<%= idx %>" value="<%= items[i].get("shipping") %>" />            <input type="hidden" name="shipping2_<%= idx %>" value="<%= items[i].get("shipping2") %>" />        </li>        <% } %>    </ul>    <div class="sbmincart-footer">        <% if (hasItems) { %>            <div class="sbmincart-subtotal">                <%= config.strings.subtotal %> <%= cart.total(totalFormat) %>            </div>                  <% } else { %>            <p class="sbmincart-empty-text"><%= config.strings.empty %></p>        <% } %>    </div>    <input type="hidden" name="cmd" value="_cart" />    <input type="hidden" name="upload" value="1" />    <% for (var key in settings) { %>        <input type="hidden" name="<%= key %>" value="<%= settings[key] %>" />    <% } %></form>',

    styles: '',

    strings: {
        button: 'Check Out with <img src="//cdnjs.cloudflare.com/ajax/libs/sbmincart/3.0.1/paypal_65x18.png" width="65" height="18" alt="PayPal" />',
        subtotal: 'Subtotal:',
        discount: 'Discount:',
        empty: 'Your shopping cart is empty'
    }

};

function test(){
	alert("in")
}

/**
 * Mixes in the user config with the default config.
 *
 * @param {object} userConfig Configuration overrides
 * @return {object}
 */
module.exports.load = function load(userConfig) {
    return mixin(defaults, userConfig);
};

},{"./util/mixin":18}],11:[function(require,module,exports){
'use strict';


module.exports = {

    COMMANDS: { _cart: true, _xclick: true, _donations: true },

    SETTINGS: /^(?:business|currency_code|lc|paymentaction|no_shipping|cn|no_note|invoice|handling_cart|weight_cart|weight_unit|tax_cart|discount_amount_cart|discount_rate_cart|page_style|image_url|cpp_|cs|cbt|return|cancel_return|notify_url|rm|custom|charset)/,

    BN: 'sbmincart_AddToCart_WPS_US',

    KEYUP_TIMEOUT: 500,

    SHOWING_CLASS: 'sbmincart-showing',

    REMOVE_CLASS: 'sbmincart-remove',

    CLOSER_CLASS: 'sbmincart-closer',

    QUANTITY_CLASS: 'sbmincart-quantity',

    ITEM_CLASS: 'sbmincart-item',

    ITEM_CHANGED_CLASS: 'sbmincart-item-changed',

    SUBMIT_CLASS: 'sbmincart-submit',

    DATA_IDX: 'data-sbmincart-idx'

};

},{}],12:[function(require,module,exports){
'use strict';


var Cart = require('./cart'),
    View = require('./view'),
    config = require('./config'),
    sbmincart = {},
    cartModel,
    confModel,
    viewModel;


/**
 * Renders the Mini Cart to the page's DOM.
 *
 * @param {object} userConfig Configuration overrides
 */
sbmincart.render = function (userConfig) {
    confModel = sbmincart.config = config.load(userConfig);
    cartModel = sbmincart.cart = new Cart(confModel.name, confModel.duration);
    viewModel = sbmincart.view = new View({
        config: confModel,
        cart: cartModel
    });

    cartModel.on('add', viewModel.addItem, viewModel);
    cartModel.on('change', viewModel.changeItem, viewModel);
    cartModel.on('remove', viewModel.removeItem, viewModel);
    cartModel.on('destroy', viewModel.hide, viewModel);
};


/**
 * Resets the Mini Cart and its view model
 */
sbmincart.reset = function () {
    cartModel.destroy();

    viewModel.hide();
    viewModel.redraw();
};




// Export to either node or the brower window
if (typeof window === 'undefined') {
    module.exports = sbmincart;
} else {
    if (!window.paypal) {
        window.paypal = {};
    }

    window.w3ls = sbmincart;
}

},{"./cart":9,"./config":10,"./view":22}],13:[function(require,module,exports){
'use strict';


var currency = require('./util/currency'),
    Pubsub = require('./util/pubsub'),
    mixin = require('./util/mixin');


var parser = {
    quantity: function (value) {
        value = parseInt(value, 10);

        if (isNaN(value) || !value) {
            value = 1;
        }

        return value;
    },
    amount: function (value) {
        return parseFloat(value) || 0;
    },
    href: function (value) {
        if (value) {
            return value;
        } else {
            return (typeof window !== 'undefined') ? window.location.href : null;
        }
    }
};


/**
 * Creates a new product.
 *
 * @constructor
 * @param {object} data Item data
 */
function Product(data) {
    data.quantity = parser.quantity(data.quantity);
    data.amount = parser.amount(data.amount);
    data.href = parser.href(data.href);

    this._data = data;
    this._options = null;
    this._discount = null;
    this._amount = null;
    this._total = null;

    Pubsub.call(this);
}


mixin(Product.prototype, Pubsub.prototype);


/**
 * Gets the product data.
 *
 * @param {string} key (Optional) A key to restrict the returned data to.
 * @return {array|string}
 */
Product.prototype.get = function get(key) {
    return (key) ? this._data[key] : this._data;
};


/**
 * Sets a value on the product. This is used rather than manually setting the
 * value so that we can fire a "change" event.
 *
 * @param {string} key
 * @param {string} value
 */
Product.prototype.set = function set(key, value) {
    var setter = parser[key];

    this._data[key] = setter ? setter(value) : value;
    this._options = null;
    this._discount = null;
    this._amount = null;
    this._total = null;

    this.fire('change', key);
};


/**
 * Parse and return the options for this product.
 *
 * @return {object}
 */
Product.prototype.options = function options() {
    var result, key, value, amount, i, j;

    if (!this._options) {
        result = [];
        i = 0;

        while ((key = this.get('on' + i))) {
            value = this.get('os' + i);
            amount = 0;
            j = 0;

            while (typeof this.get('option_select' + j) !== 'undefined') {
                if (this.get('option_select' + j) === value) {
                    amount = parser.amount(this.get('option_amount' + j));
                    break;
                }

                j++;
            }

            result.push({
                key: key,
                value: value,
                amount: amount
            });

            i++;
        }

        this._options = result;
    }

    return this._options;
};


/**
 * Parse and return the discount for this product.
 *
 * @param {object} config (Optional) Currency formatting options.
 * @return {number|string}
 */
Product.prototype.discount = function discount(config) {
    var flat, rate, num, limit, result, amount;

    if (!this._discount) {
        result = 0;
        num = parseInt(this.get('discount_num'), 10) || 0;
        limit = Math.max(num, this.get('quantity') - 1);

        if (this.get('discount_amount') !== undefined) {
            flat = parser.amount(this.get('discount_amount'));
            result += flat;
            result += parser.amount(this.get('discount_amount2') || flat) * limit;
        } else if (this.get('discount_rate') !== undefined) {
            rate = parser.amount(this.get('discount_rate'));
            amount = this.amount();

            result += rate * amount / 100;
            result += parser.amount(this.get('discount_rate2') || rate) * amount * limit / 100;
        }

        this._discount = result;
    }

    return currency(this._discount, config);
};


/**
 * Parse and return the total without discounts for this product.
 *
 * @param {object} config (Optional) Currency formatting options.
 * @return {number|string}
 */
Product.prototype.amount = function amount(config) {
    var result, options, len, i;

    if (!this._amount) {
        result = this.get('amount');
        options = this.options();

        for (i = 0, len = options.length; i < len; i++) {
            result += options[i].amount;
        }

        this._amount = result;
    }

    return currency(this._amount, config);
};


/**
 * Parse and return the total for this product.
 *
 * @param {object} config (Optional) Currency formatting options.
 * @return {number|string}
 */
Product.prototype.total = function total(config) {
    var result;

    if (!this._total) {
        result  = this.get('quantity') * this.amount();
        result -= this.discount();

        this._total = parser.amount(result);
    }

    return currency(this._total, config);
};


/**
 * Determine if this product has the same data as another.
 *
 * @param {object|Product} data Other product.
 * @return {boolean}
 */
Product.prototype.isEqual = function isEqual(data) {
    var match = false;

    if (data instanceof Product) {
        data = data._data;
    }

    if (this.get('w3ls_item') === data.w3ls_item) {
        if (this.get('item_number') === data.item_number) {
            if (this.get('amount') === parser.amount(data.amount)) {
                var i = 0;

                match = true;

                while (typeof data['os' + i] !== 'undefined') {
                    if (this.get('os' + i) !== data['os' + i]) {
                        match = false;
                        break;
                    }

                    i++;
                }
            }
        }
    }

    return match;
};


/**
 * Determine if this product is valid.
 *
 * @return {boolean}
 */
Product.prototype.isValid = function isValid() {
    return (this.get('w3ls_item') && this.amount() > 0);
};


/**
 * Destroys this product. Fires a "destroy" event.
 */
Product.prototype.destroy = function destroy() {
    this._data = [];
    this.fire('destroy', this);
};




module.exports = Product;

},{"./util/currency":15,"./util/mixin":18,"./util/pubsub":19}],14:[function(require,module,exports){
/* jshint quotmark:double */


"use strict";



module.exports.add = function add(el, str) {
    var re;

    if (!el) { return false; }

    if (el && el.classList && el.classList.add) {
        el.classList.add(str);
    } else {
        re = new RegExp("\\b" + str + "\\b");

        if (!re.test(el.className)) {
            el.className += " " + str;
        }
    }
};


module.exports.remove = function remove(el, str) {
    var re;

    if (!el) { return false; }

    if (el.classList && el.classList.add) {
        el.classList.remove(str);
    } else {
        re = new RegExp("\\b" + str + "\\b");

        if (re.test(el.className)) {
            el.className = el.className.replace(re, "");
        }
    }
};


module.exports.inject = function inject(el, str) {
    var style;

    if (!el) { return false; }

    if (str) {
        style = document.createElement("style");
        style.type = "text/css";

        if (style.styleSheet) {
            style.styleSheet.cssText = str;
        } else {
            style.appendChild(document.createTextNode(str));
        }

        el.appendChild(style);
    }
};

},{}],15:[function(require,module,exports){
'use strict';


var currencies = {
    AED: { before: '\u062c' },
    ANG: { before: '\u0192' },
    ARS: { before: '$', code: true },
    AUD: { before: '$', code: true },
    AWG: { before: '\u0192' },
    BBD: { before: '$', code: true },
    BGN: { before: '\u043b\u0432' },
    BMD: { before: '$', code: true },
    BND: { before: '$', code: true },
    BRL: { before: 'R$' },
    BSD: { before: '$', code: true },
    CAD: { before: '$', code: true },
    CHF: { before: '', code: true },
    CLP: { before: '$', code: true },
    CNY: { before: '\u00A5' },
    COP: { before: '$', code: true },
    CRC: { before: '\u20A1' },
    CZK: { before: 'Kc' },
    DKK: { before: 'kr' },
    DOP: { before: '$', code: true },
    EEK: { before: 'kr' },
    EUR: { before: '\u20AC' },
    GBP: { before: '\u00A3' },
    GTQ: { before: 'Q' },
    HKD: { before: '$', code: true },
    HRK: { before: 'kn' },
    HUF: { before: 'Ft' },
    IDR: { before: 'Rp' },
    ILS: { before: '\u20AA' },
    INR: { before: 'Rs.' },
    ISK: { before: 'kr' },
    JMD: { before: 'J$' },
    JPY: { before: '\u00A5' },
    KRW: { before: '\u20A9' },
    KYD: { before: '$', code: true },
    LTL: { before: 'Lt' },
    LVL: { before: 'Ls' },
    MXN: { before: '$', code: true },
    MYR: { before: 'RM' },
    NOK: { before: 'kr' },
    NZD: { before: '$', code: true },
    PEN: { before: 'S/' },
    PHP: { before: 'Php' },
    PLN: { before: 'z' },
    QAR: { before: '\ufdfc' },
    RON: { before: 'lei' },
    RUB: { before: '\u0440\u0443\u0431' },
    SAR: { before: '\ufdfc' },
    SEK: { before: 'kr' },
    SGD: { before: '$', code: true },
    THB: { before: '\u0E3F' },
    TRY: { before: 'TL' },
    TTD: { before: 'TT$' },
    TWD: { before: 'NT$' },
    UAH: { before: '\u20b4' },
    USD: { before: '$', code: true },
    UYU: { before: '$U' },
    VEF: { before: 'Bs' },
    VND: { before: '\u20ab' },
    XCD: { before: '$', code: true },
    ZAR: { before: 'R' }
};


module.exports = function currency(amount, config) {
    var code = config && config.currency || 'USD',
        value = currencies[code],
        before = value.before || '',
        after = value.after || '',
        length = value.length || 2,
        showCode = value.code && config && config.showCode,
        result = amount;

    if (config && config.format) {
        result = before + result.toFixed(length) + after;
    }

    if (showCode) {
        result += ' ' + code;
    }

    return result;
};

},{}],16:[function(require,module,exports){
'use strict';


module.exports = (function (window, document) {

    /**
     * Events are added here for easy reference
     */
    var cache = [];

    // NOOP for Node
    if (!document) {
        return {
            add: function () {},
            remove: function () {}
        };
    // Non-IE events
    } else if (document.addEventListener) {
        return {
            /**
             * Add an event to an object and optionally adjust it's scope
             *
             * @param obj {HTMLElement} The object to attach the event to
             * @param type {string} The type of event excluding "on"
             * @param fn {function} The function
             * @param scope {object} Object to adjust the scope to (optional)
             */
            add: function (obj, type, fn, scope) {
                scope = scope || obj;

                var wrappedFn = function (e) { fn.call(scope, e); };

                obj.addEventListener(type, wrappedFn, false);
                cache.push([obj, type, fn, wrappedFn]);
            },


            /**
             * Remove an event from an object
             *
             * @param obj {HTMLElement} The object to remove the event from
             * @param type {string} The type of event excluding "on"
             * @param fn {function} The function
             */
            remove: function (obj, type, fn) {
                var wrappedFn, item, len = cache.length, i;

                for (i = 0; i < len; i++) {
                    item = cache[i];

                    if (item[0] === obj && item[1] === type && item[2] === fn) {
                        wrappedFn = item[3];

                        if (wrappedFn) {
                            obj.removeEventListener(type, wrappedFn, false);
                            cache = cache.slice(i);
                            return true;
                        }
                    }
                }
            }
        };

    // IE events
    } else if (document.attachEvent) {
        return {
            /**
             * Add an event to an object and optionally adjust it's scope (IE)
             *
             * @param obj {HTMLElement} The object to attach the event to
             * @param type {string} The type of event excluding "on"
             * @param fn {function} The function
             * @param scope {object} Object to adjust the scope to (optional)
             */
            add: function (obj, type, fn, scope) {
                scope = scope || obj;

                var wrappedFn = function () {
                    var e = window.event;
                    e.target = e.target || e.srcElement;

                    e.preventDefault = function () {
                        e.returnValue = false;
                    };

                    fn.call(scope, e);
                };

                obj.attachEvent('on' + type, wrappedFn);
                cache.push([obj, type, fn, wrappedFn]);
            },


            /**
             * Remove an event from an object (IE)
             *
             * @param obj {HTMLElement} The object to remove the event from
             * @param type {string} The type of event excluding "on"
             * @param fn {function} The function
             */
            remove: function (obj, type, fn) {
                var wrappedFn, item, len = cache.length, i;

                for (i = 0; i < len; i++) {
                    item = cache[i];

                    if (item[0] === obj && item[1] === type && item[2] === fn) {
                        wrappedFn = item[3];

                        if (wrappedFn) {
                            obj.detachEvent('on' + type, wrappedFn);
                            cache = cache.slice(i);
                            return true;
                        }
                    }
                }
            }
        };
    }

})(typeof window === 'undefined' ? null : window, typeof document === 'undefined' ? null : document);

},{}],17:[function(require,module,exports){
'use strict';


var forms = module.exports = {

    parse: function parse(form) {
        var raw = form.elements,
            data = {},
            pair, value, i, len;

        for (i = 0, len = raw.length; i < len; i++) {
            pair = raw[i];

            if ((value = forms.getInputValue(pair))) {
                data[pair.name] = value;
            }
        }

        return data;
    },


    getInputValue: function getInputValue(input) {
        var tag = input.tagName.toLowerCase();

        if (tag === 'select') {
            return input.options[input.selectedIndex].value;
        } else if (tag === 'textarea') {
            return input.innerText;
        } else {
            if (input.type === 'radio') {
                return (input.checked) ? input.value : null;
            } else if (input.type === 'checkbox') {
                return (input.checked) ? input.value : null;
            } else {
                return input.value;
            }
        }
    }

};
},{}],18:[function(require,module,exports){
'use strict';


var mixin = module.exports = function mixin(dest, source) {
    var value;

    for (var key in source) {
        value = source[key];

        if (value && value.constructor === Object) {
            if (!dest[key]) {
                dest[key] = value;
            } else {
                mixin(dest[key] || {}, value);
            }
        } else {
            dest[key] = value;
        }
    }

    return dest;
};

},{}],19:[function(require,module,exports){
'use strict';


function Pubsub() {
    this._eventCache = {};
}


Pubsub.prototype.on = function on(name, fn, scope) {
    var cache = this._eventCache[name];

    if (!cache) {
        cache = this._eventCache[name] = [];
    }

    cache.push([fn, scope]);
};


Pubsub.prototype.off = function off(name, fn) {
    var cache = this._eventCache[name],
        i, len;

    if (cache) {
        for (i = 0, len = cache.length; i < len; i++) {
            if (cache[i] === fn) {
                cache = cache.splice(i, 1);
            }
        }
    }
};


Pubsub.prototype.fire = function on(name) {
    var cache = this._eventCache[name], i, len, fn, scope;

    if (cache) {
        for (i = 0, len = cache.length; i < len; i++) {
            fn = cache[i][0];
            scope = cache[i][1] || this;

            if (typeof fn === 'function') {
                fn.apply(scope, Array.prototype.slice.call(arguments, 1));
            }
        }
    }
};


module.exports = Pubsub;

},{}],20:[function(require,module,exports){
'use strict';


var Storage = module.exports = function Storage(name, duration) {
    this._name = name;
    this._duration = duration || 30;
};


var proto = Storage.prototype;


proto.load = function () {
    if (typeof window === 'object' && window.localStorage) {
        var data = window.localStorage.getItem(this._name), today, expires;

        if (data) {
            data = JSON.parse(decodeURIComponent(data));
        }

        if (data && data.expires) {
            today = new Date();
            expires = new Date(data.expires);

            if (today > expires) {
                this.destroy();
                return;
            }
        }

        return data && data.value;
    }
};


proto.save = function (data) {
    if (typeof window === 'object' && window.localStorage) {
        var expires = new Date(), wrapped;

        expires.setTime(expires.getTime() + this._duration * 24 * 60 * 60 * 1000);

        wrapped = {
            value: data,
            expires: expires.toGMTString()
        };

        window.localStorage.setItem(this._name, encodeURIComponent(JSON.stringify(wrapped)));
    }
};


proto.destroy = function () {
    if (typeof window === 'object' && window.localStorage) {
        window.localStorage.removeItem(this._name);
    }
};

},{}],21:[function(require,module,exports){
'use strict';


var ejs = require('ejs');


module.exports = function template(str, data) {
    return ejs.render(str, data);
};


// Workaround for IE 8's lack of support
if (!String.prototype.trim) {
    String.prototype.trim = function () {
        return this.replace(/^\s+|\s+$/g, '');
    };
}

},{"ejs":6}],22:[function(require,module,exports){
'use strict';


var config = require('./config'),
    events = require('./util/events'),
    template = require('./util/template'),
    forms = require('./util/forms'),
    css = require('./util/css'),
    viewevents = require('./viewevents'),
    constants = require('./constants');



/**
 * Creates a view model.
 *
 * @constructor
 * @param {object} model
 */
function View(model) {
    var wrapper;

    this.el = wrapper = document.createElement('div');
    this.model = model;
    this.isShowing = false;

    // HTML
    wrapper.id = config.name;
    config.parent.appendChild(wrapper);

    // CSS
    css.inject(document.getElementsByTagName('head')[0], config.styles);

    // JavaScript
    events.add(document, ('ontouchstart' in window) ? 'touchstart' : 'click', viewevents.click, this);
    events.add(document, 'keyup', viewevents.keyup, this);
    events.add(document, 'readystatechange', viewevents.readystatechange, this);
    events.add(window, 'pageshow', viewevents.pageshow, this);
}


/**
 * Tells the view to redraw
 */
View.prototype.redraw = function redraw() {
    events.remove(this.el.querySelector('form'), 'submit', this.model.cart.w3sb_checkout, this.model.cart);
    this.el.innerHTML = template(config.template, this.model);
    events.add(this.el.querySelector('form'), 'submit', this.model.cart.w3sb_checkout, this.model.cart);
};


/**
 * Tells the view to show
 */
View.prototype.show = function show() {
    if (!this.isShowing) {
        css.add(document.body, constants.SHOWING_CLASS);
        this.isShowing = true;
    }
};


/**
 * Tells the view to hide
 */
View.prototype.hide = function hide() {
    if (this.isShowing) {
        css.remove(document.body, constants.SHOWING_CLASS);
        this.isShowing = false;
    }
};


/**
 * Toggles the visibility of the view
 */
View.prototype.toggle = function toggle() {
    this[this.isShowing ? 'hide' : 'show']();
};


/**
 * Binds cart submit events to a form.
 *
 * @param {HTMLElement} form
 * @return {boolean}
 */
View.prototype.bind = function bind(form) {
    var that = this;

    // Don't bind forms without a cmd value
    if (!constants.COMMANDS[form.cmd.value]) {
        return false;
    }

    // Prevent re-binding forms
    if (form.hassbmincart) {
        return false;
    } else {
        form.hassbmincart = true;
    }

    if (form.display) {
        events.add(form, 'submit', function (e) {
            e.preventDefault();
            that.show();
        });
    } else {
        events.add(form, 'submit', function (e) {
            e.preventDefault(e);
            that.model.cart.add(forms.parse(form));
        });
    }

    return true;
};


/**
 * Adds an item to the view.
 *
 * @param {number} idx
 * @param {object} data
 */
View.prototype.addItem = function addItem(idx, data) {
    this.redraw();
    this.show();

    var els = this.el.querySelectorAll('.' + constants.ITEM_CLASS);
    css.add(els[idx], constants.ITEM_CHANGED_CLASS);
};


/**
 * Changes an item in the view.
 *
 * @param {number} idx
 * @param {object} data
 */
View.prototype.changeItem = function changeItem(idx, data) {
    this.redraw();
    this.show();

    var els = this.el.querySelectorAll('.' + constants.ITEM_CLASS);
    css.add(els[idx], constants.ITEM_CHANGED_CLASS);
};


/**
 * Removes an item from the view.
 *
 * @param {number} idx
 */
View.prototype.removeItem = function removeItem(idx) {
    this.redraw();
};




module.exports = View;

},{"./config":10,"./constants":11,"./util/css":14,"./util/events":16,"./util/forms":17,"./util/template":21,"./viewevents":23}],23:[function(require,module,exports){
'use strict';


var constants = require('./constants'),
    events = require('./util/events'),
    viewevents;


module.exports = viewevents = {

    click: function (evt) {
        var target = evt.target,
            className = target.className;

        if (this.isShowing) {
            // Cart close button
            if (className === constants.CLOSER_CLASS) {
                this.hide();
            // Product remove button
            } else if (className === constants.REMOVE_CLASS) {
                this.model.cart.remove(target.getAttribute(constants.DATA_IDX));
            // Product quantity input
            } else if (className === constants.QUANTITY_CLASS) {
                target[target.setSelectionRange ? 'setSelectionRange' : 'select'](0, 999);
            // Outside the cart
            } else if (!(/input|button|select|option/i.test(target.tagName))) {
                while (target.nodeType === 1) {
                    if (target === this.el) {
                        return;
                    }

                    target = target.parentNode;
                }

                this.hide();
            }
        }
    },


    keyup: function (evt) {
        var that = this,
            target = evt.target,
            timer;

        if (target.className === constants.QUANTITY_CLASS) {
            timer = setTimeout(function () {
                var idx = parseInt(target.getAttribute(constants.DATA_IDX), 10),
                    cart = that.model.cart,
                    product = cart.items(idx),
                    quantity = parseInt(target.value, 10);

                if (product) {
                    if (quantity > 0) {
                        product.set('quantity', quantity);
                    } else if (quantity === 0) {
                        cart.remove(idx);
                    }
                }
            }, constants.KEYUP_TIMEOUT);
        }
    },


    readystatechange: function () {
        if (/interactive|complete/.test(document.readyState)) {
            var forms, form, i, len;

            // Bind to page's forms
            forms = document.getElementsByTagName('form');

            for (i = 0, len = forms.length; i < len; i++) {
                form = forms[i];

                if (form.cmd && constants.COMMANDS[form.cmd.value]) {
                    this.bind(form);
                }
            }

            // Do the initial render when the buttons are ready
            this.redraw();

            // Only run this once
            events.remove(document, 'readystatechange', viewevents.readystatechange);
        }
    },


    pageshow: function (evt) {
        if (evt.persisted) {
            this.redraw();
            this.hide();
        }
    }

};

},{"./constants":11,"./util/events":16}]},{},[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])
;
  

Open in new window

Avatar of Tally Menning
Tally Menning

Hello! I didn't want to copy past the whole code, just have a look at https://stackoverflow.com/questions/16031139/how-do-i-unset-session-products-in-shopping-cart-using-remove-button. Everything is explained.
If still no idea, you may ask at https://writemyessaytoday.net/.
This question needs an answer!
Become an EE member today
7 DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform.
View membership options
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.