PageRenderTime 52ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/verstka/js/scr.js

https://gitlab.com/nikirilchuk/bootstrap
JavaScript | 349 lines | 298 code | 40 blank | 11 comment | 15 complexity | cd62e4fefb89bcb342b74251d303d74e MD5 | raw file
  1. (function($) {
  2. var scroller=jQuery.browser.webkit ? "body": "html";
  3. /* modernize */
  4. function modernize() {
  5. // placeholder
  6. if(!Modernizr.input.placeholder){
  7. $('[placeholder]').each(function() {
  8. $(this).watermark($(this).attr('placeholder'));
  9. });
  10. }
  11. }
  12. function inputMask(input, mask){
  13. input.each(function(){
  14. $(this).mask(mask);
  15. maskSubmitFix(input);
  16. });
  17. };
  18. function maskSubmitFix(input){
  19. input.focusout(function(){
  20. var masktext=$(this).val();
  21. if(masktext.indexOf("_")!=(-1)) $(this).val("");
  22. });
  23. };
  24. function formReset(form){
  25. var element = form.find('input,textarea').not('input[type="submit"], input[type="hidden"]'),
  26. classes = form.find('.zNice-error,.zNice-valid');
  27. element.val("");
  28. classes.removeClass('zNice-error zNice-valid');
  29. $('.required-field>span:last-child').removeClass('hidden');
  30. }
  31. /** String formatter allows to do like this
  32. /* "{0} is dead, but {1} is alive! {0} {2}".format("ASP", "ASP.NET")
  33. **/
  34. if (!String.prototype.format) {
  35. String.prototype.format = function() {
  36. var args = arguments;
  37. return this.replace(/{(\d+)}/g, function(match, number) {
  38. return typeof args[number] != 'undefined' ? args[number] : match;
  39. });
  40. };
  41. }
  42. //USAGE: $("#form").serializefiles();
  43. $.fn.serializefiles = function() {
  44. var obj = $(this);
  45. /* ADD FILE TO PARAM AJAX */
  46. var formData = new FormData();
  47. $.each($(obj).find("input[type='file']"), function(i, tag) {
  48. $.each($(tag)[0].files, function(i, file) {
  49. formData.append(tag.name, file);
  50. });
  51. });
  52. var params = $(obj).serializeArray();
  53. $.each(params, function (i, val) {
  54. formData.append(val.name, val.value);
  55. });
  56. return formData;
  57. };
  58. function slide_UpDown(){
  59. var open_close=$('.productList-button-read');
  60. open_close.click(function(){
  61. var block = $(this).closest('.productList'),//внешняя обгортка
  62. hidden = block.find('.productList-content-text');//скрытый блок
  63. if(block.is('.active')){
  64. block.removeClass('active');
  65. hidden.slideUp();
  66. $(this).html('Читать полностью');
  67. }
  68. else{
  69. block.addClass('active');
  70. hidden.slideDown();
  71. $(this).html('Скрыть');
  72. }
  73. return false;
  74. });
  75. };
  76. /* scrollUp */
  77. function scrollUp(block,targetBlock) {
  78. $(block).click(function(e){
  79. var target = $(targetBlock).offset().top;
  80. $(scroller).animate({scrollTop:target},800);
  81. return false;
  82. e.preventDefault();
  83. });
  84. }
  85. var allPriceBasket;
  86. function discontFunc(summ){
  87. var discontBlock = $('.basketForm-discont'),
  88. discont,
  89. discontPrice;
  90. if($('.cuponeDiscont input').is(':checked')){
  91. discont = discontBlock.attr('data-discontcart');
  92. discontPrice = summ*discont/100;
  93. }
  94. else{
  95. discont = discontBlock.attr('data-discontsert');
  96. discontPrice = discont;
  97. }
  98. allPriceBasket = summ-discontPrice;
  99. $('.basketAllprice-discont span').html(discontPrice);
  100. }
  101. /* basket */
  102. function allPrice(){
  103. var total_price = 0;
  104. $('.rowPrice').each(function() {
  105. var price_tmp = $(this).attr('data-rowPrice');
  106. total_price = total_price + price_tmp*1;
  107. });
  108. discontFunc(total_price);
  109. $('.basketAllprice-sum span').html(total_price);
  110. $('.basketAllprice-basket span').html(allPriceBasket);
  111. }
  112. function BasketSumm(elem){
  113. var parent = elem.closest('.basketForm-body'),
  114. product_price = elem.attr('data-price'),
  115. amount = elem.val(),
  116. total_product_price = product_price*1 * amount*1;
  117. $('.rowPrice', parent).attr( 'data-rowprice', total_product_price );
  118. $('.rowPrice span', parent).html(total_product_price);
  119. allPrice();
  120. }
  121. function removeItem(){
  122. $('.basketForm-remove').click(function(){
  123. $(this).closest('.basketForm-body').remove();
  124. allPrice();
  125. if($('.basketForm-body').length==0){
  126. $('.checkoutStep-four').html('<h4 class="text-center" style="padding-top:50px;">Корзина пуста</h4>');
  127. }
  128. return false;
  129. })
  130. }
  131. /* basket */
  132. function zForm(){
  133. $('.zNice form').submit(function(e){
  134. var form = $(this);
  135. if(form.valid()){
  136. e.stopPropagation();
  137. e.preventDefault();
  138. $.ajax({
  139. type : 'POST',
  140. url : $(this).attr('action'),
  141. data : $(this).serializefiles(),
  142. processData: false,
  143. contentType: false,
  144. success : function(data){
  145. if(form.closest('.jsForm').length>0){
  146. var textMessage = form.find('.completePopup-text'),
  147. messageTitle = textMessage.attr('data-title'),
  148. messageText = textMessage.attr('data-text'),
  149. formMessage = $('#formMessage'),
  150. formMessageTitle = formMessage.find('.zForm-title'),
  151. formMessageText = formMessage.find('.zForm-subtitle');
  152. if(typeof(messageTitle)!='undefined' || messageText !='undefined'){
  153. formMessageTitle.html(messageTitle);
  154. formMessageText.html(messageText);
  155. }
  156. $.fancybox.open({
  157. content: formMessage,
  158. padding:0
  159. });
  160. }
  161. else{
  162. alert('Form submit js/scr.js');
  163. }
  164. formReset(form);
  165. }
  166. });
  167. return false;
  168. }
  169. });
  170. }
  171. /*Podderzhka Placeholderov v starih brouzerah*/
  172. $(document).ready(function(){
  173. modernize();
  174. $('.footer_placeholder').height($('.footer').outerHeight());
  175. inputMask($('.phoneMask input'), "+7(999)-999-99-99");
  176. inputMask($('.numberInput input'), "9999-9999-9999-9999");
  177. slide_UpDown();
  178. zForm();
  179. removeItem();
  180. $('.productPrice input').change(function(){
  181. var price = $(this).attr('data-price');
  182. var numb = $(this).val();
  183. var price = price*numb;
  184. $('.basketProdItem-price span').html(price);
  185. })
  186. $('.basketProdItem-count input').change(function() {
  187. BasketSumm($(this))
  188. });
  189. $('.basketDiscont-form input').change(function(){
  190. $('.basketProdItem-count input').each(function(){
  191. BasketSumm($(this));
  192. });
  193. var summ = $('.basketAllprice-sum span').html()*1;
  194. discontFunc(summ)
  195. });
  196. $('.basketProdItem-count input').each(function(){
  197. BasketSumm($(this));
  198. });
  199. $('.basketDiscont-form input[type="radio"]').change(function(){
  200. var discont;
  201. var html;
  202. var discontBlock = $('.basketForm-discont');
  203. if($('.cuponeDiscont input').is(':checked')){
  204. discont = discontBlock.attr('data-discontcart');
  205. html=discont+'%';
  206. }
  207. else{
  208. discont = discontBlock.attr('data-discontsert');
  209. html=discont+'р';
  210. }
  211. $('.basketForm-discont span').html(html);
  212. });
  213. $('.reviewBlock-button').click(function(){
  214. $(this).hide();
  215. $('.reviewBlock-form').slideDown(200);
  216. return false;
  217. });
  218. $('.zForm').each(function(){
  219. var form = $(this);
  220. $('[type="password"]',form).each(function(){
  221. if($(this).is("#re-passwordo")==true){
  222. $(this).rules("add", {
  223. equalTo:form.find('#passwordo')
  224. });
  225. }
  226. $(this).rules( "add", {
  227. minlength : 6
  228. });
  229. });
  230. });
  231. $('.fancybox-popup').fancybox({
  232. padding:0,
  233. autoSize:true,
  234. fitToWiew:false
  235. });
  236. $('.hSlider').slick({
  237. dots:true,
  238. arrows:false
  239. });
  240. $('.vertivalCariusel-inner').slick({
  241. vertical:true,
  242. dots:false,
  243. arrows:true,
  244. slidesToShow: 2,
  245. slidesToScroll: 2
  246. });
  247. $('.prodCarousel').slick({
  248. dots:false,
  249. slidesToShow: 5,
  250. slidesToScroll: 5
  251. });
  252. $('.hBasket-top').click(function(){
  253. $('.hBasket-inner').toggleClass('active');
  254. return false;
  255. });
  256. $('.toogleBlock').click(function(){
  257. var el = $(this).attr('data-block');
  258. $(this).is('.active') ? $(this).removeClass('active').text('Скрыть') : $(this).addClass('active').text('Показать');
  259. $('.'+el).toggle();
  260. return false;
  261. });
  262. $('.sortingPanel-left a').click(function(){
  263. var button = $(this);
  264. var parent = $(this).closest('.sortingPanel-filt');
  265. $('.sortingPanel-filt').removeClass('active');
  266. parent.addClass('active');
  267. if(button.is('.sortingPanel-line')){
  268. $('.productList-itemBlock').addClass('productItem-line');
  269. }
  270. else{
  271. $('.productList-itemBlock').removeClass('productItem-line');
  272. }
  273. return false;
  274. });
  275. $('.slider-for').slick({
  276. slidesToShow: 1,
  277. slidesToScroll: 1,
  278. arrows: false,
  279. fade: true,
  280. asNavFor: '.slider-nav'
  281. });
  282. $('.slider-nav').slick({
  283. slidesToShow: 3,
  284. slidesToScroll: 1,
  285. asNavFor: '.slider-for',
  286. dots: false,
  287. focusOnSelect: true
  288. });
  289. $(document).click(function (e) {
  290. var container = $(".hBasket-inner");
  291. if (container.has(e.target).length === 0){
  292. $('.hBasket').removeClass('active');
  293. }
  294. });
  295. $('.fancybox-video').click(function(){
  296. var videoLink = $(this).attr('data-video');
  297. var iframe = '<iframe width="100%" height="299" src="https://www.youtube.com/embed/'+videoLink+'" frameborder="0" allowfullscreen></iframe>';
  298. var block = $('#videoPopup');
  299. $('.videoIframe').html(iframe);
  300. $.fancybox.open({
  301. content:block,
  302. padding:0,
  303. fitToWiew:false,
  304. autoSize:true
  305. });
  306. return false;
  307. })
  308. });
  309. })(jQuery);