/**
 * Описание обекта
 * @param {Object} selector
 * @param {Object} sortSelect
 */
function adl_form(selector, btn_send) {
  this.formhold = $(selector);
  this.btnSend = $(btn_send);
  this.radio_attr = "radio";
  this.checkbox_attr = "check";
  this.radio = this.formhold.find("input:radio");
  this.checkbox = this.formhold.find("input:checkbox");
}

/**
 * Метод инициализации внешнего вида чекбоксов и радиокнопок
 * @return this
 */
adl_form.prototype.init = function() {
  this.radio.parent("div").addClass(this.radio_attr);
  this.radio.each(function(ind){
      if($(this).attr("checked")){
        $(this).prev("label").removeClass("unact").addClass("act");
      }else{
        $(this).prev("label").removeClass("act").addClass("unact")
      }
    });

  this.checkbox.parent("div").addClass(this.checkbox_attr);
  this.checkbox.each(function(ind){
      if($(this).attr("checked")){
        $(this).prev("label").removeClass("unact").addClass("act")
      }else{
        $(this).prev("label").removeClass("act").addClass("unact")
      }
    });
}
/**
 * Метод раскрытия формы
 * @return this
 */
adl_form.prototype.opened = function() {
  this.formhold.find(".hidening").slideDown();
}

/**
 * Метод закрытия формы
 * @return this
 */
adl_form.prototype.closed = function() {
  this.formhold.find(".hidening").slideUp();
}
$(document).ready(function() {

  form = new adl_form($("#zakaz"), $("#zakaz .send"));
  form.init();
  
  $("#zakaz").click(function(){
    form.opened()
  });
  $(document).bind('keydown', function(e) {
    if (e.keyCode == 27) {
      e.preventDefault();
      form.closed();
    }
  })
  
  $("*:not(#zakaz)").click(function(e) {
        kids = e.target;
        var _a = kids;
        while (true) {
          _atag = _a.tagName;
          if (_atag && ($(_a).hasClass('feedback'))) {
            break;
          }
          else {
            if (!_atag) {
              form.closed();
              break;
            }
            _a = _a.parentNode;
          }
        }
      })
  $("#zakaz .radio label").click(function(){
    $("#zakaz .radio label").removeClass("act").removeClass("unact").addClass("unact");
    $(this).removeClass("unact").addClass("act");
  });
  $("#zakaz .check label").click(function(){
    if ($(this).parent(".check").find("input:checked").length>0){
        $(this).removeClass("act").addClass("unact");
    }
    else{
        $(this).removeClass("unact").addClass("act");
    }
  });
  $("#zakaz .dopadd").live("click",function(event){event.preventDefault();});
  $("#zakaz .dopadd").toggle(
    function(){
      $("#zakaz .dopadd").parent(".dopcontacts").find(".dopcont").slideDown(200, function(){
                                                  $(this).removeClass("close").addClass("open")
                                                });
    },
    function(){
      $("#zakaz .dopadd").parent(".dopcontacts").find(".dopcont").slideUp(200, function(){
                                                  $(this).removeClass("open").addClass("close")
                                                });
    }
  );
  // prepare the form when the DOM is ready 
  var options = { 
    //target:        '#zzzz',   // target element(s) to be updated with server response 
    beforeSubmit:  showRequest,  // pre-submit callback 
    success:       showResponse,  // post-submit callback 
 
    // other available options: 
    //url:       url         // override for form's 'action' attribute 
    //type:      type        // 'get' or 'post', override for form's 'method' attribute 
    //dataType:  null        // 'xml', 'script', or 'json' (expected server response type) 
    clearForm: true        // clear all form fields after successful submit 
    //resetForm: true        // reset the form after successful submit 
 
    // $.ajax options can be used here too, for example: 
    //timeout:   3000 
  }; 
  $('#zakaz').parent("form").submit(function() { 
        $(this).ajaxSubmit(options); 
        return false; 
    }); 

  // pre-submit callback 
  function showRequest(formData, jqForm, options) { 
    var error = ''; 
    var queryString = $.param(formData); 
//    alert('About to submit: \n\n' + queryString); 
    var form = jqForm[0]; 
    
    if(form.name.value==''){
      error+='<li>Поле Имя пустое</li>';
    }    
    if(form.phone.value=='' && form.email.value==''){
      error+='<li>Укажите Ваш Телефон или E-mail</li>';
    }
    
    if(form.email.value!='' && !checkmail(form.email.value)){
      error+='<li>E-mail указан не корректно</li>';
    }
    
    if(error.length > 0){
      $('#order_service ul.errhold').html(error);
      return false;
    }
    
    return true; 
  } 
   // post-submit callback 
  function showResponse(responseText, statusText, xhr, $form)  {
    $('#order_service ul.errhold').html('<li>'+responseText+'</li>');    
    $("#zakaz").find(".hidening").slideUp();
    
    form.init();
  }
  
  function checkmail(value) {
    reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
    if (!value.match(reg)){
      return false;
    }
    
    return true;
  } 
});


