Index: branches/1.0.x/inc/profile.css
===================================================================
diff -u -N -r14805 -r15169
--- branches/1.0.x/inc/profile.css (.../profile.css) (revision 14805)
+++ branches/1.0.x/inc/profile.css (.../profile.css) (revision 15169)
@@ -1,133 +1,133 @@
-@charset "UTF-8";
-
-/* Profile Blocks
-*******************************************************************************/
-.profile {
- background-color: #fff;
- border: 1px solid #d0d0d0;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- padding: 20px 30px;
- width: auto;
-}
-.profile.registerpage {
- border: none;
- padding: 0 30px;
- width: 680px;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
-}
-.profile-title {
- border-bottom: 1px solid #d0d0d0;
- margin-bottom: 15px;
- padding-bottom: 15px;
-}
-.profile, .review h1 {
- color: #525252;
- float: left;
- font: 1.538em Verdana,Arial,Tahoma,Sans-Serif;
-}
-.profile p.req {
- color: #3e85d2;
- float: right;
- font-size: 1em;
- font-weight: bold;
- padding-top: 10px;
-}
-.profile .halfcol {
- float: left;
- padding: 0 15px 0 0;
- width: 315px;
-}
-.profile .halfcol-last {
- padding: 0;
- position: relative;
-}
-
-.profile-form label {
- display: block;
- font-weight: bold;
- padding-bottom: 3px;
-}
-
-.profile-form.left label {
- display: inline;
- padding-bottom: 0px;
-
- float: left;
- padding-top: 3px;
- width: 90px;
-}
-
-.field-content label {
- display: inline;
- font-weight: normal;
- padding: 0;
-}
-
-.red {
- color: #cd0000;
- font-weight: normal;
- padding: 0 0 0 5px;
-}
-.profile-form p {
- clear: both !important;
- float: left;
- padding: 5px 0;
-}
-.profile-form .field { width: 270px; }
-.profile-form .alt2 .field { width: 150px; }
-.field.statusSuccess {
- background: url(@templates_base@/img/bg-field-success.jpg) repeat-x 0 0;
- border: 1px solid #80d04d !important;
-}
-.field.statusError, .error .field {
- background: url(@templates_base@/img/bg-field-error.jpg) repeat-x 0 0;
- border: 1px solid #d80000 !important;
-}
-
-.review .profile-form .field { float: left; width: 380px; }
-.review .profile-form p.buttons { padding: 0 0 0 90px; width: 380px; }
-.review .profile-form p.buttons em { float: right; text-align: right; width: 170px; }
-
-.terms {
- text-align: center;
- width: 100%;
-}
-
-.password-block {
- /*display: none;*/
- float: left;
- padding: 5px 0;
- position: relative;
- width: 100%;
-}
-.registerpage .password-block { display: block; }
-.password-block p {
- clear: none !important;
- padding: 0 15px 0 0;
-}
-.password-block p.pasfield2 { padding: 0; }
-.password-block .field { width: 121px; }
-#change-password { color: #267bd1; }
-
-
-.colorbar {
- display: inline-block;
- height: 8px;
- width: 29px;
-}
-
-.password-strength { display: none; font-weight: bold; }
-.password-strength .meterDefault { color: #aaa; }
-.password-strength .meterFail { color: #daa; }
-.password-strength .meterWarn { color: #fd6; }
-.password-strength .meterGood { color: #ada; }
-.password-strength .meterExcel { color: #66c133; }
-.password-strength .colorbar.meterDefault { background-color: #ddd; }
-.password-strength .colorbar.meterFail { background-color: #fdd; }
-.password-strength .colorbar.meterWarn { background-color: #feb; }
-.password-strength .colorbar.meterGood { background-color: #dfd; }
-.password-strength .colorbar.meterExcel { background-color: #66c133; }
+@charset "UTF-8";
+
+/* Profile Blocks
+*******************************************************************************/
+.profile {
+ background-color: #fff;
+ border: 1px solid #d0d0d0;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+ padding: 20px 30px;
+ width: auto;
+}
+.profile.registerpage {
+ border: none;
+ padding: 0 30px;
+ width: 680px;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.profile-title {
+ border-bottom: 1px solid #d0d0d0;
+ margin-bottom: 15px;
+ padding-bottom: 15px;
+}
+.profile, .review h1 {
+ color: #525252;
+ float: left;
+ font: 1.538em Verdana,Arial,Tahoma,Sans-Serif;
+}
+.profile p.req {
+ color: #3e85d2;
+ float: right;
+ font-size: 1em;
+ font-weight: bold;
+ padding-top: 10px;
+}
+.profile .halfcol {
+ float: left;
+ padding: 0 15px 0 0;
+ width: 315px;
+}
+.profile .halfcol-last {
+ padding: 0;
+ position: relative;
+}
+
+.profile-form label {
+ display: block;
+ font-weight: bold;
+ padding-bottom: 3px;
+}
+
+.profile-form.left label {
+ display: inline;
+ padding-bottom: 0px;
+
+ float: left;
+ padding-top: 3px;
+ width: 90px;
+}
+
+.field-content label {
+ display: inline;
+ font-weight: normal;
+ padding: 0;
+}
+
+.red {
+ color: #cd0000;
+ font-weight: normal;
+ padding: 0 0 0 5px;
+}
+.profile-form p {
+ clear: both !important;
+ float: left;
+ padding: 5px 0;
+}
+.profile-form .field { width: 270px; }
+.profile-form .alt2 .field { width: 150px; }
+.field.statusSuccess {
+ background: url(@templates_base@/img/bg-field-success.jpg) repeat-x 0 0;
+ border: 1px solid #80d04d !important;
+}
+.field.statusError, .error .field {
+ background: url(@templates_base@/img/bg-field-error.jpg) repeat-x 0 0;
+ border: 1px solid #d80000 !important;
+}
+
+.review .profile-form .field { float: left; width: 380px; }
+.review .profile-form p.buttons { padding: 0 0 0 90px; width: 380px; }
+.review .profile-form p.buttons em { float: right; text-align: right; width: 170px; }
+
+.terms {
+ text-align: center;
+ width: 100%;
+}
+
+.password-block {
+ /*display: none;*/
+ float: left;
+ padding: 5px 0;
+ position: relative;
+ width: 100%;
+}
+.registerpage .password-block { display: block; }
+.password-block p {
+ clear: none !important;
+ padding: 0 15px 0 0;
+}
+.password-block p.pasfield2 { padding: 0; }
+.password-block .field { width: 121px; }
+#change-password { color: #267bd1; }
+
+
+.colorbar {
+ display: inline-block;
+ height: 8px;
+ width: 29px;
+}
+
+.password-strength { display: none; font-weight: bold; }
+.password-strength .meterDefault { color: #aaa; }
+.password-strength .meterFail { color: #daa; }
+.password-strength .meterWarn { color: #fd6; }
+.password-strength .meterGood { color: #ada; }
+.password-strength .meterExcel { color: #66c133; }
+.password-strength .colorbar.meterDefault { background-color: #ddd; }
+.password-strength .colorbar.meterFail { background-color: #fdd; }
+.password-strength .colorbar.meterWarn { background-color: #feb; }
+.password-strength .colorbar.meterGood { background-color: #dfd; }
+.password-strength .colorbar.meterExcel { background-color: #66c133; }
Index: branches/1.0.x/inc/modal.css
===================================================================
diff -u -N -r14708 -r15169
--- branches/1.0.x/inc/modal.css (.../modal.css) (revision 14708)
+++ branches/1.0.x/inc/modal.css (.../modal.css) (revision 15169)
@@ -1,7 +1,7 @@
-@charset "UTF-8";
-
-.tbox {position:absolute; display:none; padding:14px 17px; z-index:900}
-.tinner {padding:15px; -moz-border-radius:3px; border-radius:3px; background:#fff url(@templates_base@/img/modal/preload.gif) no-repeat 50% 50%; border:1px solid #404040;}
-.tmask {position:absolute; display:none; top:0px; left:0px; height:100%; width:100%; background:#000; z-index:800}
-.tclose {position:absolute; top:45px; right:50px; width:100px; height:15px; cursor:pointer; background:url(@templates_base@/img/modal/close.png) no-repeat 100% 0; color: #5a5a5a; font: bold 11px Arial; text-align: right; padding-right: 20px;}
+@charset "UTF-8";
+
+.tbox {position:absolute; display:none; padding:14px 17px; z-index:900}
+.tinner {padding:15px; -moz-border-radius:3px; border-radius:3px; background:#fff url(@templates_base@/img/modal/preload.gif) no-repeat 50% 50%; border:1px solid #404040;}
+.tmask {position:absolute; display:none; top:0px; left:0px; height:100%; width:100%; background:#000; z-index:800}
+.tclose {position:absolute; top:45px; right:50px; width:100px; height:15px; cursor:pointer; background:url(@templates_base@/img/modal/close.png) no-repeat 100% 0; color: #5a5a5a; font: bold 11px Arial; text-align: right; padding-right: 20px;}
.tcontent {border: 9px solid #e6e6e6; padding: 40px 50px;}
\ No newline at end of file
Index: branches/1.0.x/maintenance.tpl
===================================================================
diff -u -N -r14948 -r15169
--- branches/1.0.x/maintenance.tpl (.../maintenance.tpl) (revision 14948)
+++ branches/1.0.x/maintenance.tpl (.../maintenance.tpl) (revision 15169)
@@ -1,165 +1,165 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: branches/1.0.x/elements/ajax/shipping_type.tpl
===================================================================
diff -u -N -r14822 -r15169
--- branches/1.0.x/elements/ajax/shipping_type.tpl (.../shipping_type.tpl) (revision 14822)
+++ branches/1.0.x/elements/ajax/shipping_type.tpl (.../shipping_type.tpl) (revision 15169)
@@ -1,42 +1,42 @@
-
-
-
-
-
-
- value=""> ()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
Index: branches/1.0.x/inc/details.css
===================================================================
diff -u -N -r14859 -r15169
--- branches/1.0.x/inc/details.css (.../details.css) (revision 14859)
+++ branches/1.0.x/inc/details.css (.../details.css) (revision 15169)
@@ -1,355 +1,355 @@
-@charset "UTF-8";
-
-/* Category Page
-*******************************************************************************/
-.goods {
- margin: 5px 0;
- padding: 20px 20px 10px 20px;
-}
-
-.block h2 a.product-prev {
- background: url(@templates_base@/img/product-nav.png) no-repeat 0 0;
- height: 21px;
- position: absolute;
- right: 40px;
- top: 9px;
- width: 21px;
-}
-.block h2 a.product-next {
- background: url(@templates_base@/img/product-nav.png) no-repeat 100% 0;
- height: 21px;
- position: absolute;
- right: 15px;
- top: 9px;
- width: 21px;
-}
-.block h2 a.product-prev:hover { background-position: 0 -21px; }
-.block h2 a.product-next:hover { background-position: 100% -21px; }
-
-.block h2 a.product-prev.disabled { background-position: 0 -42px; }
-.block h2 a.product-next.disabled { background-position: 100% -42px; }
-
-.block h2 a.product-prev.disabled:hover,
-.block h2 a.product-next.disabled:hover { background: none; }
-
-.product-detail { position: relative; }
-.product-detail .ribbon {
- background: url(@templates_base@/img/ribbon-big.png) no-repeat 0 0;
- height: 53px;
- position: absolute;
- top: -3px; right: -7px;
- width: 136px;
- z-index: 100;
-}
-.product-detail .ribbon.sale { background-position: 0 0; }
-.product-detail .ribbon.top { background-position: 0 -53px; }
-.product-detail .ribbon.new { background-position: 0 -106px; }
-
-.product-detail h1 {
- color: #000;
- float: left;
- font: 1.846em Tahoma,Verdana,Arial,Sans-Serif;
- padding: 0 0 20px;
-}
-.product-detail .rating {
- float: left;
- padding: 6px 0 0 10px;
-}
-.product-detail .h1-reviews {
- float: left;
- padding: 8px 0 0 10px;
-}
-
-.product .info {
- float: left;
- padding: 0 20px 0 0;
- width: 260px;
-}
-.product .info .img {
- position: relative;
-}
-.product .viewlarger {
- position: absolute;
- text-align: center;
- top: 265px;
- width: 260px;
-}
-.product .viewlarger a {
- background: url(@templates_base@/img/icon-zoom-small.png) no-repeat 0 2px;
- padding: 0 0 0 20px;
-}
-.product .info .img .signsmall {
- color: #000;
- font-size: 0.846em;
- position: absolute;
- top: 320px;
- text-align: center;
- width: 260px;
-}
-.product .info .img .showmore {
- color: #686767;
- margin-top: 490px;
- position: absolute;
-}
-
-.product .info .doplinks {
- background: url(@templates_base@/img/bg-doplinks.jpg) no-repeat 0 0;
- float: left;
- height: 152px;
- margin-top: 220px;
- padding: 40px 0 0 25px;
- width: 225px;
-}
-.product .doplinks a.link-print {
- background: url(@templates_base@/img/icon-print.jpg) no-repeat 0 0;
- display: inline-block;
- height: 32px;
- line-height: 32px;
- padding: 0 20px 13px 40px;
-}
-.product .doplinks a.link-compare {
- background: url(@templates_base@/img/icon-compare.png) no-repeat 3px 5px;
- display: inline-block;
- height: 32px;
- line-height: 32px;
- padding: 0 20px 10px 40px;
-}
-.product .doplinks a.link-wishlist {
- background: url(@templates_base@/img/icon-wishlist.jpg) no-repeat 0 0;
- display: inline-block;
- height: 32px;
- line-height: 32px;
- padding: 0 20px 0 40px;
-}
-
-.product .description {
- float: left;
- width: 380px;
-}
-.product .description .text {
- padding: 15px 0;
-}
-
-.product .description .options-har {
- background-color: #f0f0f0;
- margin-bottom: 15px;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
-}
-.product .description .options-har .sel-options {
- color: #686767;
- float: left;
- padding: 8px 0 8px 20px;
-}
-.product .description .har { border-top: 1px solid #d0d0d0; float: left; margin-top: 10px; padding-top: 10px; text-align: left; width: 50%; }
-.product .description .har dt { float: left; font-weight: bold; padding: 0 10px 3px 0; width: 100px; }
-.product .description .har dd { float: left; padding: 0 0 3px 0; width: 80px; }
-.product .description .har_right dt { width: 50px; }
-
-.product .description .price-block {
- float: left;
- width: 150px;
-}
-.product .description .price-block s.under {
- display: block;
- font-size: 1.308em;
- font-weight: bold;
- padding-right: 10px;
-}
-.product .description .price-block s.under span { font-size: 0.706em; }
-.product .description .price-block .redprice { padding: 10px 0; }
-.product .description .price-block em.price {
- color: #C2120A;
- font-size: 1.846em;
- font-weight: bold;
- font-style: normal;
-}
-.product .description .price-block em.price span { font-size: 0.708em; }
-.product .description .order-block {
- float: right;
- width: 230px;
-}
-.product .description .order-block .qty {
- color: #686767;
- float: left;
- padding-top: 5px;
-}
-.product .description .order-block .qty .field {
- text-align: center;
- width: 25px;
-}
-.product .description .order-block .avail {
- color: #686767;
- float: right;
- font-weight: bold;
- padding-top: 10px;
-}
-.product .description .order-block .avail em {
- color: #00b309;
-}
-.product .description .order-block .but {
- float: right;
-}
-.product .description .order-block .addtocart {
- background: url(@templates_base@/img/addtocart-left.jpg) no-repeat 0 0;
- color: #faffed;
- display: inline-block;
- font-size: 1.077em;
- font-weight: bold;
- text-shadow: #000 0px 1px 1px;
- text-decoration: none;
-}
-.product .description .order-block .addtocart span {
- background: url(@templates_base@/img/addtocart-right.jpg) no-repeat 100% 0;
- display: inline-block;
- padding: 0 20px 0 10px;
-}
-.product .description .order-block .addtocart span i {
- background: url(@templates_base@/img/bg-button-cart-add.png) no-repeat 0 3px;
- line-height: 33px;
- padding: 7px 0 7px 30px;
-}
-
-.product .description .order-block .addedtocart {
- color: #3D901F;
- font-size: 1.154em;
-}
-
-/*** Tabs ***/
-.ui-tabs .ui-tabs-nav {
- padding: 0;
-}
-.ui-widget-header {
- background: none;
- border: none;
- color: #000;
-}
-.ui-tabs .ui-tabs-nav li {
- border: 1px solid #949494;
-}
-.ui-tabs .ui-tabs-nav li.ui-tabs-selected {
- background: #fff url(@templates_base@/img/bg-tab.png) repeat-x 0 0;
- border-bottom: none;
- position: relative;
- z-index: 100;
- bottom: -1px;
-}
-
-.ui-tabs .ui-tabs-panel {
- border: 1px solid #949494;
- height: 350px;
- overflow-x: hidden;
-}
-.ui-tabs .ui-tabs-panel p { padding-bottom: 15px; }
-
-/*** Reviews ***/
-.reviews {
- border-bottom: 1px solid #d0d0d0;
- float: left;
- padding-top: 30px;
- width: 100%;
-}
-.reviews .info-review {
- float: left;
- padding: 0 0 20px;
- width: 350px;
-}
-.reviews .info-review .title {
- color: #2b2b2b;
- font-size: 1.385em;
- line-height: 1.2em;
-}
-.reviews .info-review .but-review {
- float: left;
- padding: 20px 0 0;
-}
-.reviews .info-review .addreview {
- background: url(@templates_base@/img/icon-addreview.jpg) no-repeat 0 0;
- display: block;
- height: 22px;
- line-height: 22px;
- padding: 0 0 0 30px;
-}
-.reviews .info-review .sortby {
- color: #585858;
- float: left;
- font-weight: bold;
- padding: 20px 0 0 20px;
-}
-.reviews .overall-review {
- float: right;
- width: 215px;
-}
-.reviews .overall-review p {
- color: #585858;
- float: left;
- font-weight: bold;
- padding: 0 10px 0 0;
-}
-.reviews .overall-review .overall-detail {
- float: left;
-}
-.reviews .overall-review .overall-detail i {
- float: left;
- width: 35px;
-}
-.reviews .overall-review .overall-detail span {
- float: left;
- width: 75px;
-}
-
-.reviews .row-review {
- border-top: 1px solid #d0d0d0;
- clear: both !important;
- float: left;
- padding: 15px 0;
-}
-.reviews .row-review .user { color: #2275cd; font-weight: bold; padding: 0 0 10px; }
-.reviews .row-review .text-review { color: #000; padding: 0 0 10px; }
-.reviews .row-review .optional-review { color: #000; font-size: 0.846em; }
-.reviews .row-review .optional-review p {
- float: left;
- padding: 0 20px 0 0;
-}
-.reviews .row-review .optional-review em { color: #8b8b8b; }
-.reviews .row-review .optional-review p.rat img { margin-bottom: -2px; }
-.reviews .row-review .optional-review p.date { float: right; padding: 0; text-align: right; }
-.reviews .row-review .optional-review a { color: #000; }
-.reviews .row-review .optional-review a.yes { color: #009000; font-weight: bold; }
-.reviews .row-review .optional-review a.no { color: #ae0000; font-weight: bold; }
-
-/*** Pagination ***/
-.pagination { padding: 20px 0 10px; text-align: center; }
-.pagination span,
-.pagination a {
- background: url(@templates_base@/img/paginate.png) no-repeat -28px 0;
- color: #fff;
- display: inline-block;
- font-size: 1.308em;
- font-weight: bold;
- height: 28px;
- line-height: 28px;
- text-align: center;
- text-decoration: none;
- width: 28px;
-}
-.pagination span.prev {
- background-position: 0 100%;
- margin-right: 20px;
-}
-.pagination a.prev {
- background-position: 0 0;
- margin-right: 20px;
-}
-.pagination span.next {
- background-position: -56px 100%;
- margin-left: 20px;
-}
-.pagination a.next {
- background-position: -56px 0;
- margin-left: 20px;
-}
-.pagination a.active {
- background-position: -28px 100%;
-}
+@charset "UTF-8";
+
+/* Category Page
+*******************************************************************************/
+.goods {
+ margin: 5px 0;
+ padding: 20px 20px 10px 20px;
+}
+
+.block h2 a.product-prev {
+ background: url(@templates_base@/img/product-nav.png) no-repeat 0 0;
+ height: 21px;
+ position: absolute;
+ right: 40px;
+ top: 9px;
+ width: 21px;
+}
+.block h2 a.product-next {
+ background: url(@templates_base@/img/product-nav.png) no-repeat 100% 0;
+ height: 21px;
+ position: absolute;
+ right: 15px;
+ top: 9px;
+ width: 21px;
+}
+.block h2 a.product-prev:hover { background-position: 0 -21px; }
+.block h2 a.product-next:hover { background-position: 100% -21px; }
+
+.block h2 a.product-prev.disabled { background-position: 0 -42px; }
+.block h2 a.product-next.disabled { background-position: 100% -42px; }
+
+.block h2 a.product-prev.disabled:hover,
+.block h2 a.product-next.disabled:hover { background: none; }
+
+.product-detail { position: relative; }
+.product-detail .ribbon {
+ background: url(@templates_base@/img/ribbon-big.png) no-repeat 0 0;
+ height: 53px;
+ position: absolute;
+ top: -3px; right: -7px;
+ width: 136px;
+ z-index: 100;
+}
+.product-detail .ribbon.sale { background-position: 0 0; }
+.product-detail .ribbon.top { background-position: 0 -53px; }
+.product-detail .ribbon.new { background-position: 0 -106px; }
+
+.product-detail h1 {
+ color: #000;
+ float: left;
+ font: 1.846em Tahoma,Verdana,Arial,Sans-Serif;
+ padding: 0 0 20px;
+}
+.product-detail .rating {
+ float: left;
+ padding: 6px 0 0 10px;
+}
+.product-detail .h1-reviews {
+ float: left;
+ padding: 8px 0 0 10px;
+}
+
+.product .info {
+ float: left;
+ padding: 0 20px 0 0;
+ width: 260px;
+}
+.product .info .img {
+ position: relative;
+}
+.product .viewlarger {
+ position: absolute;
+ text-align: center;
+ top: 265px;
+ width: 260px;
+}
+.product .viewlarger a {
+ background: url(@templates_base@/img/icon-zoom-small.png) no-repeat 0 2px;
+ padding: 0 0 0 20px;
+}
+.product .info .img .signsmall {
+ color: #000;
+ font-size: 0.846em;
+ position: absolute;
+ top: 320px;
+ text-align: center;
+ width: 260px;
+}
+.product .info .img .showmore {
+ color: #686767;
+ margin-top: 490px;
+ position: absolute;
+}
+
+.product .info .doplinks {
+ background: url(@templates_base@/img/bg-doplinks.jpg) no-repeat 0 0;
+ float: left;
+ height: 152px;
+ margin-top: 220px;
+ padding: 40px 0 0 25px;
+ width: 225px;
+}
+.product .doplinks a.link-print {
+ background: url(@templates_base@/img/icon-print.jpg) no-repeat 0 0;
+ display: inline-block;
+ height: 32px;
+ line-height: 32px;
+ padding: 0 20px 13px 40px;
+}
+.product .doplinks a.link-compare {
+ background: url(@templates_base@/img/icon-compare.png) no-repeat 3px 5px;
+ display: inline-block;
+ height: 32px;
+ line-height: 32px;
+ padding: 0 20px 10px 40px;
+}
+.product .doplinks a.link-wishlist {
+ background: url(@templates_base@/img/icon-wishlist.jpg) no-repeat 0 0;
+ display: inline-block;
+ height: 32px;
+ line-height: 32px;
+ padding: 0 20px 0 40px;
+}
+
+.product .description {
+ float: left;
+ width: 380px;
+}
+.product .description .text {
+ padding: 15px 0;
+}
+
+.product .description .options-har {
+ background-color: #f0f0f0;
+ margin-bottom: 15px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.product .description .options-har .sel-options {
+ color: #686767;
+ float: left;
+ padding: 8px 0 8px 20px;
+}
+.product .description .har { border-top: 1px solid #d0d0d0; float: left; margin-top: 10px; padding-top: 10px; text-align: left; width: 50%; }
+.product .description .har dt { float: left; font-weight: bold; padding: 0 10px 3px 0; width: 100px; }
+.product .description .har dd { float: left; padding: 0 0 3px 0; width: 80px; }
+.product .description .har_right dt { width: 50px; }
+
+.product .description .price-block {
+ float: left;
+ width: 150px;
+}
+.product .description .price-block s.under {
+ display: block;
+ font-size: 1.308em;
+ font-weight: bold;
+ padding-right: 10px;
+}
+.product .description .price-block s.under span { font-size: 0.706em; }
+.product .description .price-block .redprice { padding: 10px 0; }
+.product .description .price-block em.price {
+ color: #C2120A;
+ font-size: 1.846em;
+ font-weight: bold;
+ font-style: normal;
+}
+.product .description .price-block em.price span { font-size: 0.708em; }
+.product .description .order-block {
+ float: right;
+ width: 230px;
+}
+.product .description .order-block .qty {
+ color: #686767;
+ float: left;
+ padding-top: 5px;
+}
+.product .description .order-block .qty .field {
+ text-align: center;
+ width: 25px;
+}
+.product .description .order-block .avail {
+ color: #686767;
+ float: right;
+ font-weight: bold;
+ padding-top: 10px;
+}
+.product .description .order-block .avail em {
+ color: #00b309;
+}
+.product .description .order-block .but {
+ float: right;
+}
+.product .description .order-block .addtocart {
+ background: url(@templates_base@/img/addtocart-left.jpg) no-repeat 0 0;
+ color: #faffed;
+ display: inline-block;
+ font-size: 1.077em;
+ font-weight: bold;
+ text-shadow: #000 0px 1px 1px;
+ text-decoration: none;
+}
+.product .description .order-block .addtocart span {
+ background: url(@templates_base@/img/addtocart-right.jpg) no-repeat 100% 0;
+ display: inline-block;
+ padding: 0 20px 0 10px;
+}
+.product .description .order-block .addtocart span i {
+ background: url(@templates_base@/img/bg-button-cart-add.png) no-repeat 0 3px;
+ line-height: 33px;
+ padding: 7px 0 7px 30px;
+}
+
+.product .description .order-block .addedtocart {
+ color: #3D901F;
+ font-size: 1.154em;
+}
+
+/*** Tabs ***/
+.ui-tabs .ui-tabs-nav {
+ padding: 0;
+}
+.ui-widget-header {
+ background: none;
+ border: none;
+ color: #000;
+}
+.ui-tabs .ui-tabs-nav li {
+ border: 1px solid #949494;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected {
+ background: #fff url(@templates_base@/img/bg-tab.png) repeat-x 0 0;
+ border-bottom: none;
+ position: relative;
+ z-index: 100;
+ bottom: -1px;
+}
+
+.ui-tabs .ui-tabs-panel {
+ border: 1px solid #949494;
+ height: 350px;
+ overflow-x: hidden;
+}
+.ui-tabs .ui-tabs-panel p { padding-bottom: 15px; }
+
+/*** Reviews ***/
+.reviews {
+ border-bottom: 1px solid #d0d0d0;
+ float: left;
+ padding-top: 30px;
+ width: 100%;
+}
+.reviews .info-review {
+ float: left;
+ padding: 0 0 20px;
+ width: 350px;
+}
+.reviews .info-review .title {
+ color: #2b2b2b;
+ font-size: 1.385em;
+ line-height: 1.2em;
+}
+.reviews .info-review .but-review {
+ float: left;
+ padding: 20px 0 0;
+}
+.reviews .info-review .addreview {
+ background: url(@templates_base@/img/icon-addreview.jpg) no-repeat 0 0;
+ display: block;
+ height: 22px;
+ line-height: 22px;
+ padding: 0 0 0 30px;
+}
+.reviews .info-review .sortby {
+ color: #585858;
+ float: left;
+ font-weight: bold;
+ padding: 20px 0 0 20px;
+}
+.reviews .overall-review {
+ float: right;
+ width: 215px;
+}
+.reviews .overall-review p {
+ color: #585858;
+ float: left;
+ font-weight: bold;
+ padding: 0 10px 0 0;
+}
+.reviews .overall-review .overall-detail {
+ float: left;
+}
+.reviews .overall-review .overall-detail i {
+ float: left;
+ width: 35px;
+}
+.reviews .overall-review .overall-detail span {
+ float: left;
+ width: 75px;
+}
+
+.reviews .row-review {
+ border-top: 1px solid #d0d0d0;
+ clear: both !important;
+ float: left;
+ padding: 15px 0;
+}
+.reviews .row-review .user { color: #2275cd; font-weight: bold; padding: 0 0 10px; }
+.reviews .row-review .text-review { color: #000; padding: 0 0 10px; }
+.reviews .row-review .optional-review { color: #000; font-size: 0.846em; }
+.reviews .row-review .optional-review p {
+ float: left;
+ padding: 0 20px 0 0;
+}
+.reviews .row-review .optional-review em { color: #8b8b8b; }
+.reviews .row-review .optional-review p.rat img { margin-bottom: -2px; }
+.reviews .row-review .optional-review p.date { float: right; padding: 0; text-align: right; }
+.reviews .row-review .optional-review a { color: #000; }
+.reviews .row-review .optional-review a.yes { color: #009000; font-weight: bold; }
+.reviews .row-review .optional-review a.no { color: #ae0000; font-weight: bold; }
+
+/*** Pagination ***/
+.pagination { padding: 20px 0 10px; text-align: center; }
+.pagination span,
+.pagination a {
+ background: url(@templates_base@/img/paginate.png) no-repeat -28px 0;
+ color: #fff;
+ display: inline-block;
+ font-size: 1.308em;
+ font-weight: bold;
+ height: 28px;
+ line-height: 28px;
+ text-align: center;
+ text-decoration: none;
+ width: 28px;
+}
+.pagination span.prev {
+ background-position: 0 100%;
+ margin-right: 20px;
+}
+.pagination a.prev {
+ background-position: 0 0;
+ margin-right: 20px;
+}
+.pagination span.next {
+ background-position: -56px 100%;
+ margin-left: 20px;
+}
+.pagination a.next {
+ background-position: -56px 0;
+ margin-left: 20px;
+}
+.pagination a.active {
+ background-position: -28px 100%;
+}
Index: branches/1.0.x/elements/ajax/order_totals.tpl
===================================================================
diff -u -N -r14829 -r15169
--- branches/1.0.x/elements/ajax/order_totals.tpl (.../order_totals.tpl) (revision 14829)
+++ branches/1.0.x/elements/ajax/order_totals.tpl (.../order_totals.tpl) (revision 15169)
@@ -1,42 +1,42 @@
-
-
-
- Subtotal
-
-
-
-
-
-
- Shipping
-
-
-
-
- Processing Fee
-
-
-
-
- Tax %
-
-
-
-
- Discount:
- -
-
-
-
-
-
- Gift Certificate
-
-
-
-
-
-
-
- Items in your order () |
- Qty. |
- Price |
- Total |
-
-
-
-
-
-
-
+
+
+
+
+
+ rowspan="2">
+
+ |
+
+
+
+
+
+ :
+ :
+
+ |
+ |
+ |
+ |
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+ Items in your order () |
+ Qty. |
+ Price |
+ Total |
+
+
+
+
+
+
+
\ No newline at end of file
Index: branches/1.0.x/inc/js/passwordStrengthMeter.js
===================================================================
diff -u -N -r14759 -r15169
--- branches/1.0.x/inc/js/passwordStrengthMeter.js (.../passwordStrengthMeter.js) (revision 14759)
+++ branches/1.0.x/inc/js/passwordStrengthMeter.js (.../passwordStrengthMeter.js) (revision 15169)
@@ -1,138 +1,138 @@
-function PasswordStrengthMeter($settings) {
- this.inputSelector = '';
-
- this.phrases = {
- 'short': 'Too Short Password',
- 'bad': 'Week; Use letters & numbers',
- 'good': 'Medium; Use special characters',
- 'strong': 'Strong Password'
- };
-
- this.cssClasses = {
- 'short': 'meterFail',
- 'bad': 'meterWarn',
- 'good': 'meterGood',
- 'strong': 'meterExcel'
- };
-
- $.extend(true, this, $settings);
-
- var $me = this;
-
- $(document).ready(
- function() {
- $($me.inputSelector).keyup(
- function($e) {
- $($me.inputSelector + '_strength')
- .html( $me.getStrengthHTML( $(this).val() ) )
- .show();
- }
- );
- }
- );
-}
-
-PasswordStrengthMeter.prototype.getStrength = function (password) {
- var score = 0;
-
- // password < 4
- if (password.length < 4) {
- return 'short';
- }
-
- // password length
- score += password.length * 4;
- score += parseInt( this.checkRepetition(1, password).length - password.length );
- score += parseInt( this.checkRepetition(2, password).length - password.length );
- score += parseInt( this.checkRepetition(3, password).length - password.length );
- score += parseInt( this.checkRepetition(4, password).length - password.length );
-
- // password has 3 numbers
- if (password.match(/(.*[0-9].*[0-9].*[0-9])/)) {
- score += 5;
- }
-
- // password has 2 symbols
- if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) {
- score += 5;
- }
-
- // password has Upper and Lower chars
- if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {
- score += 10;
- }
-
- // password has number and chars
- if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) {
- score += 15;
- }
- //
- // password has number and symbol
- if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)) {
- score += 15;
- }
-
- // password has char and symbol
- if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)) {
- score += 15;
- }
-
- // password is just a nubers or chars
- if (password.match(/^\w+$/) || password.match(/^\d+$/)) {
- score -= 10;
- }
-
- // verifying 0 < score < 100
- if (score < 0) {
- score = 0;
- }
-
- if (score > 100) {
- score = 100;
- }
-
- if (score < 34) {
- return 'bad';
- }
-
- if (score < 68) {
- return 'good';
- }
-
- return 'strong';
-}
-
-PasswordStrengthMeter.prototype.getStrengthHTML = function (password) {
- var $strength = this.getStrength(password),
- $css_class = this.cssClasses[$strength],
- $phrase = this.phrases[$strength];
-
- return '
' + $phrase + '';
-}
-
-PasswordStrengthMeter.prototype.checkRepetition = function(pLen, str) {
- var res = "",
- repeated = true;
-
- for (i = 0; i < str.length; i++) {
- repeated = true;
-
- for (j = 0; j < pLen && (j + i + pLen) < str.length; j++) {
- repeated = repeated && (str.charAt(j + i) == str.charAt(j + i + pLen));
- }
-
- if (j < pLen) {
- repeated = false;
- }
-
- if (repeated) {
- i += pLen - 1;
- repeated = false;
- }
- else {
- res += str.charAt(i);
- }
- }
-
- return res;
+function PasswordStrengthMeter($settings) {
+ this.inputSelector = '';
+
+ this.phrases = {
+ 'short': 'Too Short Password',
+ 'bad': 'Week; Use letters & numbers',
+ 'good': 'Medium; Use special characters',
+ 'strong': 'Strong Password'
+ };
+
+ this.cssClasses = {
+ 'short': 'meterFail',
+ 'bad': 'meterWarn',
+ 'good': 'meterGood',
+ 'strong': 'meterExcel'
+ };
+
+ $.extend(true, this, $settings);
+
+ var $me = this;
+
+ $(document).ready(
+ function() {
+ $($me.inputSelector).keyup(
+ function($e) {
+ $($me.inputSelector + '_strength')
+ .html( $me.getStrengthHTML( $(this).val() ) )
+ .show();
+ }
+ );
+ }
+ );
+}
+
+PasswordStrengthMeter.prototype.getStrength = function (password) {
+ var score = 0;
+
+ // password < 4
+ if (password.length < 4) {
+ return 'short';
+ }
+
+ // password length
+ score += password.length * 4;
+ score += parseInt( this.checkRepetition(1, password).length - password.length );
+ score += parseInt( this.checkRepetition(2, password).length - password.length );
+ score += parseInt( this.checkRepetition(3, password).length - password.length );
+ score += parseInt( this.checkRepetition(4, password).length - password.length );
+
+ // password has 3 numbers
+ if (password.match(/(.*[0-9].*[0-9].*[0-9])/)) {
+ score += 5;
+ }
+
+ // password has 2 symbols
+ if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) {
+ score += 5;
+ }
+
+ // password has Upper and Lower chars
+ if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {
+ score += 10;
+ }
+
+ // password has number and chars
+ if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)) {
+ score += 15;
+ }
+ //
+ // password has number and symbol
+ if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)) {
+ score += 15;
+ }
+
+ // password has char and symbol
+ if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)) {
+ score += 15;
+ }
+
+ // password is just a nubers or chars
+ if (password.match(/^\w+$/) || password.match(/^\d+$/)) {
+ score -= 10;
+ }
+
+ // verifying 0 < score < 100
+ if (score < 0) {
+ score = 0;
+ }
+
+ if (score > 100) {
+ score = 100;
+ }
+
+ if (score < 34) {
+ return 'bad';
+ }
+
+ if (score < 68) {
+ return 'good';
+ }
+
+ return 'strong';
+}
+
+PasswordStrengthMeter.prototype.getStrengthHTML = function (password) {
+ var $strength = this.getStrength(password),
+ $css_class = this.cssClasses[$strength],
+ $phrase = this.phrases[$strength];
+
+ return '
' + $phrase + '';
+}
+
+PasswordStrengthMeter.prototype.checkRepetition = function(pLen, str) {
+ var res = "",
+ repeated = true;
+
+ for (i = 0; i < str.length; i++) {
+ repeated = true;
+
+ for (j = 0; j < pLen && (j + i + pLen) < str.length; j++) {
+ repeated = repeated && (str.charAt(j + i) == str.charAt(j + i + pLen));
+ }
+
+ if (j < pLen) {
+ repeated = false;
+ }
+
+ if (repeated) {
+ i += pLen - 1;
+ repeated = false;
+ }
+ else {
+ res += str.charAt(i);
+ }
+ }
+
+ return res;
}
\ No newline at end of file
Index: branches/1.0.x/inc/js/validate/jquery.validationEngine.js
===================================================================
diff -u -N -r14600 -r15169
--- branches/1.0.x/inc/js/validate/jquery.validationEngine.js (.../jquery.validationEngine.js) (revision 14600)
+++ branches/1.0.x/inc/js/validate/jquery.validationEngine.js (.../jquery.validationEngine.js) (revision 15169)
@@ -1,1429 +1,1429 @@
-/*
- * Inline Form Validation Engine 2.2, jQuery plugin
- *
- * Copyright(c) 2010, Cedric Dugas
- * http://www.position-absolute.com
- *
- * 2.0 Rewrite by Olivier Refalo
- * http://www.crionics.com
- *
- * Form validation engine allowing custom regex rules to be added.
- * Licensed under the MIT License
- */
-(function($) {
-
- var methods = {
-
- /**
- * Kind of the constructor, called before any action
- * @param {Map} user options
- */
- init: function(options) {
- var form = this;
- if (!form.data('jqv') || form.data('jqv') == null ) {
- methods._saveOptions(form, options);
-
- // bind all formError elements to close on click
- $(".formError").live("click", function() {
- $(this).fadeOut(150, function() {
-
- // remove prompt once invisible
- $(this).remove();
- });
- });
- }
- },
- /**
- * Attachs jQuery.validationEngine to form.submit and field.blur events
- * Takes an optional params: a list of options
- * ie. jQuery("#formID1").validationEngine('attach', {promptPosition : "centerRight"});
- */
- attach: function(userOptions) {
-
- var form = this;
- var options;
-
- if(userOptions)
- options = methods._saveOptions(form, userOptions);
- else
- options = form.data('jqv');
-
- var validateAttribute = (form.find("[data-validation-engine*=validate]")) ? "data-validation-engine" : "class";
-
- if (!options.binded) {
- if (options.bindMethod == "bind"){
-
- // bind fields
- form.find("[class*=validate]").not("[type=checkbox]").not("[type=radio]").not(".datepicker").bind(options.validationEventTrigger, methods._onFieldEvent);
- form.find("[class*=validate][type=checkbox],[class*=validate][type=radio]").bind("click", methods._onFieldEvent);
-
- form.find("[class*=validate][class*=datepicker]").bind(options.validationEventTrigger,{"delay": 300}, methods._onFieldEvent);
-
- // bind form.submit
- form.bind("submit", methods._onSubmitEvent);
- } else if (options.bindMethod == "live") {
- // bind fields with LIVE (for persistant state)
- form.find("[class*=validate]").not("[type=checkbox]").not(".datepicker").live(options.validationEventTrigger, methods._onFieldEvent);
- form.find("[class*=validate][type=checkbox]").live("click", methods._onFieldEvent);
-
- form.find("[class*=validate][class*=datepicker]").live(options.validationEventTrigger,{"delay": 300}, methods._onFieldEvent);
-
- // bind form.submit
- form.live("submit", methods._onSubmitEvent);
- }
-
- options.binded = true;
- }
- return this;
- },
- /**
- * Unregisters any bindings that may point to jQuery.validaitonEngine
- */
- detach: function() {
- var form = this;
- var options = form.data('jqv');
- if (options.binded) {
-
- // unbind fields
- form.find("[class*=validate]").not("[type=checkbox]").unbind(options.validationEventTrigger, methods._onFieldEvent);
- form.find("[class*=validate][type=checkbox],[class*=validate][type=radio]").unbind("click", methods._onFieldEvent);
-
- // unbind form.submit
- form.unbind("submit", methods.onAjaxFormComplete);
-
-
- // unbind live fields (kill)
- form.find("[class*=validate]").not("[type=checkbox]").die(options.validationEventTrigger, methods._onFieldEvent);
- form.find("[class*=validate][type=checkbox]").die("click", methods._onFieldEvent);
- // unbind form.submit
-
-
-
-
- form.die("submit", methods.onAjaxFormComplete);
-
- form.removeData('jqv');
- }
- },
- /**
- * Validates the form fields, shows prompts accordingly.
- * Note: There is no ajax form validation with this method, only field ajax validation are evaluated
- *
- * @return true if the form validates, false if it fails
- */
- validate: function() {
- return methods._validateFields(this);
- },
- /**
- * Validates one field, shows prompt accordingly.
- * Note: There is no ajax form validation with this method, only field ajax validation are evaluated
- *
- * @return true if the form validates, false if it fails
- */
- validateField: function(el) {
- var options = $(this).data('jqv');
- return methods._validateField($(el), options);
- },
- /**
- * Validates the form fields, shows prompts accordingly.
- * Note: this methods performs fields and form ajax validations(if setup)
- *
- * @return true if the form validates, false if it fails, undefined if ajax is used for form validation
- */
- validateform: function() {
- return methods._onSubmitEvent.call(this);
- },
- /**
- * Redraw prompts position, useful when you change the DOM state when validating
- */
- updatePromptsPosition: function() {
- var form = this.closest('form');
- var options = form.data('jqv');
- // No option, take default one
- form.find('[class*=validate]').not(':hidden').not(":disabled").each(function(){
- var field = $(this);
-
- var prompt = methods._getPrompt(field);
- var promptText = $(prompt).find(".formErrorContent").html();
-
- if(prompt) methods._updatePrompt(field, $(prompt), promptText, undefined, false, options);
- })
- },
- /**
- * Displays a prompt on a element.
- * Note that the element needs an id!
- *
- * @param {String} promptText html text to display type
- * @param {String} type the type of bubble: 'pass' (green), 'load' (black) anything else (red)
- * @param {String} possible values topLeft, topRight, bottomLeft, centerRight, bottomRight
- */
- showPrompt: function(promptText, type, promptPosition, showArrow) {
-
- var form = this.closest('form');
- var options = form.data('jqv');
- // No option, take default one
- if(!options) options = methods._saveOptions(this, options);
- if(promptPosition)
- options.promptPosition=promptPosition;
- options.showArrow = showArrow==true;
-
- methods._showPrompt(this, promptText, type, false, options);
- },
- /**
- * Closes all error prompts on the page
- */
- hidePrompt: function() {
- var promptClass = "."+ methods._getClassName($(this).attr("id")) + "formError";
- $(promptClass).fadeTo("fast", 0.3, function() {
- $(this).remove();
- });
- },
- /**
- * Closes form error prompts, CAN be invidual
- */
- hide: function() {
- var closingtag;
- if($(this).is("form")){
- closingtag = "parentForm"+$(this).attr('id');
- }else{
- closingtag = $(this).attr('id') +"formError";
- }
- $('.'+closingtag).fadeTo("fast", 0.3, function() {
- $(this).remove();
- });
- },
- /**
- * Closes all error prompts on the page
- */
- hideAll: function() {
- $('.formError').fadeTo("fast", 0.3, function() {
- $(this).remove();
- });
- },
- /**
- * Typically called when user exists a field using tab or a mouse click, triggers a field
- * validation
- */
- _onFieldEvent: function(event) {
- var field = $(this);
- var form = field.closest('form');
- var options = form.data('jqv');
- // validate the current field
- window.setTimeout(function() {
- methods._validateField(field, options);
- }, (event.data) ? event.data.delay : 0);
-
- },
- /**
- * Called when the form is submited, shows prompts accordingly
- *
- * @param {jqObject}
- * form
- * @return false if form submission needs to be cancelled
- */
- _onSubmitEvent: function() {
- var form = $(this);
- var options = form.data('jqv');
-
- // validate each field (- skip field ajax validation, no necessary since we will perform an ajax form validation)
- var r=methods._validateFields(form, true);
-
- if (r && options.ajaxFormValidation) {
- methods._validateFormWithAjax(form, options);
- return false;
- }
-
- if(options.onValidationComplete) {
- options.onValidationComplete(form, r);
- return false;
- }
- return r;
- },
-
- /**
- * Return true if the ajax field validations passed so far
- * @param {Object} options
- * @return true, is all ajax validation passed so far (remember ajax is async)
- */
- _checkAjaxStatus: function(options) {
- var status = true;
- $.each(options.ajaxValidCache, function(key, value) {
- if (!value) {
- status = false;
- // break the each
- return false;
- }
- });
- return status;
- },
- /**
- * Validates form fields, shows prompts accordingly
- *
- * @param {jqObject}
- * form
- * @param {skipAjaxFieldValidation}
- * boolean - when set to true, ajax field validation is skipped, typically used when the submit button is clicked
- *
- * @return true if form is valid, false if not, undefined if ajax form validation is done
- */
- _validateFields: function(form, skipAjaxValidation) {
- var options = form.data('jqv');
-
- // this variable is set to true if an error is found
- var errorFound = false;
-
- // Trigger hook, start validation
- form.trigger("jqv.form.validating");
- // first, evaluate status of non ajax fields
- form.find('[class*=validate]').not(':hidden').not(":disabled").each( function() {
- var field = $(this);
- errorFound |= methods._validateField(field, options, skipAjaxValidation);
- });
- // second, check to see if all ajax calls completed ok
- // errorFound |= !methods._checkAjaxStatus(options);
-
- // thrird, check status and scroll the container accordingly
- form.trigger("jqv.form.result", [errorFound]);
-
- if (errorFound) {
-
- if (options.scroll) {
-
- // get the position of the first error, there should be at least one, no need to check this
- //var destination = form.find(".formError:not('.greenPopup'):first").offset().top;
-
- // look for the visually top prompt
- var destination = Number.MAX_VALUE;
- var fixleft = 0;
- var lst = $(".formError:not('.greenPopup')");
-
- for (var i = 0; i < lst.length; i++) {
- var d = $(lst[i]).offset().top;
- if (d < destination){
- destination = d;
- fixleft = $(lst[i]).offset().left;
- }
- }
-
- if (!options.isOverflown)
- $("html:not(:animated),body:not(:animated)").animate({
- scrollTop: destination,
- scrollLeft: fixleft
- }, 1100);
- else {
- var overflowDIV = $(options.overflownDIV);
- var scrollContainerScroll = overflowDIV.scrollTop();
- var scrollContainerPos = -parseInt(overflowDIV.offset().top);
-
- destination += scrollContainerScroll + scrollContainerPos - 5;
- var scrollContainer = $(options.overflownDIV + ":not(:animated)");
-
- scrollContainer.animate({
- scrollTop: destination
- }, 1100);
-
- $("html:not(:animated),body:not(:animated)").animate({
- scrollTop: overflowDIV.offset().top,
- scrollLeft: fixleft
- }, 1100);
- }
- }
- return false;
- }
- return true;
- },
- /**
- * This method is called to perform an ajax form validation.
- * During this process all the (field, value) pairs are sent to the server which returns a list of invalid fields or true
- *
- * @param {jqObject} form
- * @param {Map} options
- */
- _validateFormWithAjax: function(form, options) {
-
- var data = form.serialize();
- var url = (options.ajaxFormValidationURL) ? options.ajaxFormValidationURL : form.attr("action");
- $.ajax({
- type: "GET",
- url: url,
- cache: false,
- dataType: "json",
- data: data,
- form: form,
- methods: methods,
- options: options,
- beforeSend: function() {
- return options.onBeforeAjaxFormValidation(form, options);
- },
- error: function(data, transport) {
- methods._ajaxError(data, transport);
- },
- success: function(json) {
-
- if (json !== true) {
-
- // getting to this case doesn't necessary means that the form is invalid
- // the server may return green or closing prompt actions
- // this flag helps figuring it out
- var errorInForm=false;
- for (var i = 0; i < json.length; i++) {
- var value = json[i];
-
- var errorFieldId = value[0];
- var errorField = $($("#" + errorFieldId)[0]);
-
- // make sure we found the element
- if (errorField.length == 1) {
-
- // promptText or selector
- var msg = value[2];
- // if the field is valid
- if (value[1] == true) {
-
- if (msg == "" || !msg){
- // if for some reason, status==true and error="", just close the prompt
- methods._closePrompt(errorField);
- } else {
- // the field is valid, but we are displaying a green prompt
- if (options.allrules[msg]) {
- var txt = options.allrules[msg].alertTextOk;
- if (txt)
- msg = txt;
- }
- methods._showPrompt(errorField, msg, "pass", false, options, true);
- }
-
- } else {
- // the field is invalid, show the red error prompt
- errorInForm|=true;
- if (options.allrules[msg]) {
- var txt = options.allrules[msg].alertText;
- if (txt)
- msg = txt;
- }
- methods._showPrompt(errorField, msg, "", false, options, true);
- }
- }
- }
- options.onAjaxFormComplete(!errorInForm, form, json, options);
- } else
- options.onAjaxFormComplete(true, form, "", options);
- }
- });
-
- },
- /**
- * Validates field, shows prompts accordingly
- *
- * @param {jqObject}
- * field
- * @param {Array[String]}
- * field's validation rules
- * @param {Map}
- * user options
- * @return true if field is valid
- */
- _validateField: function(field, options, skipAjaxValidation) {
- if (!field.attr("id"))
- $.error("jQueryValidate: an ID attribute is required for this field: " + field.attr("name") + " class:" +
- field.attr("class"));
-
- var rulesParsing = field.attr('class');
- var getRules = /validate\[(.*)\]/.exec(rulesParsing);
- if (!getRules)
- return false;
- var str = getRules[1];
- var rules = str.split(/\[|,|\]/);
-
- // true if we ran the ajax validation, tells the logic to stop messing with prompts
- var isAjaxValidator = false;
- var fieldName = field.attr("name");
- var promptText = "";
- var required = false;
- options.isError = false;
- options.showArrow = true;
-
- for (var i = 0; i < rules.length; i++) {
-
- var errorMsg = undefined;
- switch (rules[i]) {
-
- case "required":
- required = true;
- errorMsg = methods._required(field, rules, i, options);
- break;
- case "custom":
- errorMsg = methods._customRegex(field, rules, i, options);
- break;
- case "groupRequired":
- // Check is its the first of group, if not, reload validation with first field
- // AND continue normal validation on present field
- var classGroup = "[class*=" +rules[i + 1] +"]";
- var firstOfGroup = field.closest("form").find(classGroup).eq(0);
- if(firstOfGroup[0] != field[0]){
- methods._validateField(firstOfGroup, options, skipAjaxValidation)
- options.showArrow = true;
- continue;
- };
- errorMsg = methods._groupRequired(field, rules, i, options);
- if(errorMsg) required = true;
- options.showArrow = false;
- break;
- case "ajax":
- // ajax has its own prompts handling technique
- if(!skipAjaxValidation){
- methods._ajax(field, rules, i, options);
- isAjaxValidator = true;
- }
- break;
- case "minSize":
- errorMsg = methods._minSize(field, rules, i, options);
- break;
- case "maxSize":
- errorMsg = methods._maxSize(field, rules, i, options);
- break;
- case "min":
- errorMsg = methods._min(field, rules, i, options);
- break;
- case "max":
- errorMsg = methods._max(field, rules, i, options);
- break;
- case "past":
- errorMsg = methods._past(field, rules, i, options);
- break;
- case "future":
- errorMsg = methods._future(field, rules, i, options);
- break;
- case "dateRange":
- var classGroup = "[class*=" + rules[i + 1] + "]";
- var firstOfGroup = field.closest("form").find(classGroup).eq(0);
- var secondOfGroup = field.closest("form").find(classGroup).eq(1);
- /*
- if (firstOfGroup[0] != field[0]) {
- methods._validateField(firstOfGroup, options, skipAjaxValidation)
- options.showArrow = true;
- continue;
- };
- */
- //if one entry out of the pair has value then proceed to run through validation
- if (firstOfGroup[0].value || secondOfGroup[0].value) {
- errorMsg = methods._dateRange(firstOfGroup, secondOfGroup, rules, i, options);
- }
- if (errorMsg) required = true;
- options.showArrow = false;
- break;
-
- case "dateTimeRange":
- var classGroup = "[class*=" + rules[i + 1] + "]";
- var firstOfGroup = field.closest("form").find(classGroup).eq(0);
- var secondOfGroup = field.closest("form").find(classGroup).eq(1);
- /*
- if (firstOfGroup[0] != field[0]) {
- methods._validateField(firstOfGroup, options, skipAjaxValidation)
- options.showArrow = true;
- continue;
- };
- */
- //if one entry out of the pair has value then proceed to run through validation
- if (firstOfGroup[0].value || secondOfGroup[0].value) {
- errorMsg = methods._dateTimeRange(firstOfGroup, secondOfGroup, rules, i, options);
- }
- if (errorMsg) required = true;
- options.showArrow = false;
- break;
- case "maxCheckbox":
- errorMsg = methods._maxCheckbox(field, rules, i, options);
- field = $($("input[name='" + fieldName + "']"));
- break;
- case "minCheckbox":
- errorMsg = methods._minCheckbox(field, rules, i, options);
- field = $($("input[name='" + fieldName + "']"));
- break;
- case "equals":
- errorMsg = methods._equals(field, rules, i, options);
- break;
- case "funcCall":
- errorMsg = methods._funcCall(field, rules, i, options);
- break;
-
- default:
- //$.error("jQueryValidator rule not found"+rules[i]);
- }
- if (errorMsg !== undefined) {
- promptText += errorMsg + "
";
- options.isError = true;
-
- }
-
- }
- // If the rules required is not added, an empty field is not validated
- if(!required){
- if(field.val() == "") options.isError = false;
- }
-
- // Hack for radio/checkbox group button, the validation go into the
- // first radio/checkbox of the group
- var fieldType = field.attr("type");
-
- if ((fieldType == "radio" || fieldType == "checkbox") && $("input[name='" + fieldName + "']").size() > 1) {
- field = $($("input[name='" + fieldName + "'][type!=hidden]:first"));
- options.showArrow = false;
- }
- if (fieldType == "text" && $("input[name='" + fieldName + "']").size() > 1) {
- field = $($("input[name='" + fieldName + "'][type!=hidden]:first"));
- options.showArrow = false;
- }
-
- if (options.isError){
-
- methods._showPrompt(field, promptText, "", false, options);
- }else{
- if (!isAjaxValidator) methods._closePrompt(field);
- }
- field.trigger("jqv.field.result", [field, options.isError, promptText]);
- return options.isError;
- },
- /**
- * Required validation
- *
- * @param {jqObject} field
- * @param {Array[String]} rules
- * @param {int} i rules index
- * @param {Map}
- * user options
- * @return an error string if validation failed
- */
- _required: function(field, rules, i, options) {
- switch (field.attr("type")) {
- case "text":
- case "password":
- case "textarea":
- case "file":
- default:
- if (!field.val())
- return options.allrules[rules[i]].alertText;
- break;
- case "radio":
- case "checkbox":
- var name = field.attr("name");
- if ($("input[name='" + name + "']:checked").size() == 0) {
- if ($("input[name='" + name + "']").size() == 1)
- return options.allrules[rules[i]].alertTextCheckboxe;
- else
- return options.allrules[rules[i]].alertTextCheckboxMultiple;
- }
- break;
- // required for