Advertisement
Guest User

Untitled

a guest
Jul 31st, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Created with JetBrains PhpStorm.
  3.  * User: Vitaly
  4.  * Date: 06.06.13
  5.  * Time: 20:22
  6.  * To change this template use File | Settings | File Templates.
  7.  */
  8. function inArray(needle, haystack) {
  9.     var length = haystack.length;
  10.     for(var i = 0; i < length; i++) {
  11.         if(typeof haystack[i] == 'object') {
  12.             if(arrayCompare(haystack[i], needle)) return true;
  13.         } else {
  14.             if(haystack[i] == needle) return true;
  15.         }
  16.     }
  17.     return false;
  18. }
  19. window.isset = function (v) {
  20.     if (typeof(v) == 'object' && v == 'undefined') {
  21.         return false;
  22.     } else  if (arguments.length === 0) {
  23.         return false;
  24.     } else {
  25.         var buff = arguments[0];
  26.         for (var i = 0; i < arguments.length; i++){
  27.             if (typeof(buff) === 'undefined' || buff === null) return false;
  28.             buff = buff[arguments[i+1]];
  29.         }
  30.     }
  31.     return true;
  32. }
  33.  
  34. function myconf() {
  35.     var cf = $.Deferred();
  36.         $.ajax({
  37.             type: 'POST',
  38.             url: 'feedback/',
  39.             dataType: 'json',
  40.             data: 'act=cfg',
  41.             success: function(answer) {
  42.                 cf.resolve(answer.configs);
  43.             }
  44.         });
  45.     return cf;
  46. }
  47.  
  48. var mcf = myconf();
  49.  
  50. mcf.done(function(conf) {
  51.  
  52. $(document).ready(function() {
  53. (function() {
  54.            var fb = $('.feedback');
  55.            if(fb.length > 0) {
  56.                 fb.each(function(){
  57.                     var form = $(this).closest('form'), name = form.attr('name');
  58.                     //console.log(form);
  59.                     if(isset(conf[name]) && isset(conf[name].cfg.antispamjs)) {
  60.                       $(form).prepend('<input type="text" name="'+ conf[name].cfg.antispamjs +'" value="tesby" style="display:none;">');
  61.                     }
  62.                 });
  63.             }
  64.   })();
  65. });
  66.  
  67.  
  68. /**
  69.  * Отправка форм.
  70.  *
  71.  */
  72.  
  73. function feedback(vars) {
  74.     var bt = $(vars.form).find('.feedback');
  75.     var btc = bt.clone();
  76.     var bvc = bt.val();
  77.     var cfg = conf[vars.act].cfg;
  78.  
  79.     $.ajax({
  80.         type: 'POST',
  81.         url: 'feedback/',
  82.         cache: false,
  83.         dataType: 'json',
  84.         data: 'act=' + vars.act + '&' + vars.data,
  85.         beforeSend: function() {
  86.             //$(bt).val('');
  87.             $(bt).prop("disabled", true);
  88.             $(bt).addClass('loading');
  89.         },
  90.         success: function(answer) {
  91.             //console.log(cfg);
  92.           if(isset(cfg.notify) && !/none/i.test(cfg.notify)) {
  93.  
  94.              if(/textbox/i.test(cfg.notify)) {
  95.                     if(isset(answer.errors)) {
  96.                         $.each(answer.errors, function(k,val) {
  97.                             $.jGrowl(val, {theme: 'error', header: 'Ошибка!', life: 3000 });
  98.                         });
  99.                     } if(isset(answer.infos)) {
  100.                         $.each(answer.infos, function(k,val) {
  101.                             $.jGrowl(val, {theme: 'infos', header: 'Внимание!', life: 3000 });
  102.                         });
  103.                     }
  104.  
  105.             }  if(/color/i.test(cfg.notify)) {
  106.                  $(vars.form).find('input[type=text]:visible, textarea:visible, select:visible').css({'border': '1px solid #D7D5CF'}, 300);
  107.                  if(isset(answer.errors)) {
  108.                      $.each(answer.errors, function(k,val) {
  109.                          var reg = /[a-z]/i;
  110.                          if(reg.test(k)) {
  111.                           var e = $(vars.form).find('[name='+ k +']');
  112.                           if(e.length == 1) {
  113.                            $(e).css({'border': '1px solid #FF532E'}, 100);
  114.                           }
  115.                         }
  116.                      });
  117.                  } if(isset(answer.infos)) {
  118.                       var li='', $inf = $('<ul>', {id:'feedback-infolist'});
  119.                        $.each(answer.infos, function(k,val) {
  120.                           li += '<li>'+ val +'</li>';
  121.                        });
  122.  
  123.                       $inf.html(li);
  124.  
  125.                       $.arcticmodal('close');
  126.  
  127.                       if(/modal/i.test(cfg.notify)) {
  128.                           var m = $('<div class="box-modal" id="feedback-modal-box" />');
  129.                           m.html($inf);
  130.                           m.prepend('<div class="modal-close arcticmodal-close">X</div>');
  131.                           $.arcticmodal({content: m});
  132.                       }
  133.                        //bt.replaceWith($inf);
  134.  
  135.                      /* setInterval(function(){
  136.                         //$('#feedback-inf-box').replaceWith(btc);
  137.                         $('#feedback-modal-box').arcticmodal('close');
  138.                       }, 4000);*/
  139.                   }
  140.  
  141.             }
  142.           }
  143.             $(bt).prop("disabled", false);
  144.             $(bt).removeClass('loading');
  145.             //$(bt).val(bvc);
  146.  
  147.             if(isset(answer.ok) && answer.ok == 1) {
  148.                 $(vars.form)[0].reset();
  149.             }
  150.         }
  151.     });
  152.  
  153. }
  154.  
  155.     $(document).on('mouseenter mouseover', '.feedback', function(){
  156.         var form = $(this).closest('form'), name = form.attr('name');
  157.         if(isset(conf[name]) && isset(conf[name].cfg.antispamjs)) {
  158.             $('input[name='+ conf[name].cfg.antispamjs +']').val('');
  159.         }
  160.     });
  161.  
  162.  
  163. /**
  164.  * Обработчик кнопки форм.
  165.  * Кнопка должна быть внутри тегов <form> c классом .feedback
  166.  * будет отправлено любое кол-во полей, кроме файлов
  167.  *
  168.  */
  169.  
  170. $(document).on('click', '.feedback', function(){
  171.    var form = $(this).closest('form'), name = form.attr('name'), obj = {};
  172.        obj.form = form;
  173.        obj.act = name;
  174.        obj.data = $(form).serialize();
  175.  
  176.       feedback(obj);
  177.  
  178.     return false;
  179. });
  180.  
  181. }); // done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement