function menuToggle(id){
  $('#'+id).toggle();

  if ($('#'+id).closest('li').hasClass('op')){
    $('#'+id).closest('li').removeClass('op');
  } else {
    $('#'+id).closest('li').addClass('op');
  }
}

$(document).ready(function() {
  $(".main_block").corner("top 6px");
  cuSel({ changedEl: "#cur", scrollArrows: false});
  cuSel({ changedEl: "#col", scrollArrows: false });
  cuSel({ changedEl: "#proizv", scrollArrows: false });
  cuSel({ changedEl: "#sklad", scrollArrows: false });

  $('img.tooltip').tooltip({delay: 0.5, showURL: false, bodyHandler: function() { return $("<img/>").attr("src", this.src);} });

  $('.basket_btn').click(function(){basket_addTo(this);return false;});
  $('.custom_btn').button();

  $("#basketCity").autocomplete({source: "/basket/?act=showCities", minLength: 1, change:function(event,ui){
    $("#basketStreet").autocomplete("option", 'source', "/basket/?act=showStreets&city="+$('#basketCity').val());
  }
  });
  $("#basketStreet").autocomplete({source: "/basket/?act=showStreets&city="+$('#basketCity').val(),minLength: 2});

// basket page
  $('#orderBtn').colorbox({
    width:"350",
    height:"520",
    href:"#dialog-form",
    inline:true,
    onLoad: function(){
      if($('#delivery_holder input:checked').attr('withoutAddress') == 'true'){
        $("#basketAddressHolder").hide();
      } else {
        $("#basketAddressHolder").show();
      }
      $('#dialog-form').show();
    }
  });

  $('#formCloseBtn').click(function(){
    $.colorbox.close();
  });

  $('#formOrderBtn').click(function(){
    var bValid = validateOrderForm();
    var params = new Object({act:'order', uname:$( "#name" ).val(),
      email:$( "#email" ).val(), code:$( "#code" ).val(),
      phone:$( "#phone" ).val(), address:$( "#address" ).val(),
      description: $('#description').val(),
      ajax: 'true',
      city: $("#basketCity").val(),
      street: $("#basketStreet").val(),
      house: $("#basketHouse").val(),
      housing: $("#basketHousing").val(),
      apartment: $("#basketApartment").val(),
    });

    if ( bValid ) {
      $.post('/basket/', params, function(retr){
        if (retr.done){
          $.colorbox({html:'<p style="margin:50px;">Спасибо! Ваш заказ принят, в ближайшее время с вами свяжется менеджер.',
            onClosed:function(){ window.location = '/basket/';} });
        } else {
          $.colorbox({html:'<p style="margin:50px;">Ошибка! Пожалуйста повторите попытку через некоторое время.'});
        }
      }, 'json');

    }
  });

  $('#BasketForm input:radio').click(function(){
    $('#form_act').val('recalc');
    $('#BasketForm').submit();
  });

  // next & prev buttons
  document.onkeydown = NavigateThrough;
  function NavigateThrough (event){
    if (window.event) event = window.event;

    if (event.ctrlKey){
      var link = null;
      switch (event.keyCode ? event.keyCode : event.which ? event.which : null){
        case 0x25:
          link = $('#prevLink').attr('href');
          break;
        case 0x27:
          link = $('#nextLink').attr('href');
        break;
      }

      if (link) document.location = link;
    }
  }

});


function basket_addTo(elm){
  var url = elm.href;
  if(url.indexOf("&ajax=true") < 0){
    url += '&ajax=true';
  }
  $.getJSON(url, {}, function(retr){
    if (retr.done){
      $('#basket_count').html(retr.all_count);
      $('#basket_cost').html(retr.products_cost_print);
      $('#basket_currency').html(retr.currency);
      $.colorbox({html:retr.message});
    }
  });
}

function validateOrderForm(){
  var bValid = true,
      uname = $( "#name" ),
      email = $( "#email" ),
      code = $( "#code" ),
      phone = $( "#phone" ),
      address = $( "#address" );
  var allFields = $( [] ).add( uname ).add( email ).add( code ).add( phone ).add( address );
  allFields.removeClass( "ui-state-error" );

  bValid = bValid && checkLength( uname, "имя", 0, 100 );
  bValid = bValid && checkLength( email, "email", 0, 80 );
  bValid = bValid && checkLength( code, "код", 2, 2 );
  bValid = bValid && checkLength( phone, "телефон", 7, 7 );

  if (email.val()){
    bValid = bValid && checkRegexp( email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "например test@mail.by" );
  }
  bValid = bValid && checkRegexp( phone, /^([0-9])+$/, "Телефон может содержать только цифры" );

  return bValid;

}

function updateTips( t ) {
  $( ".validateTips" )
    .text( t )
    .addClass( "ui-state-highlight" );
  setTimeout(function() {
    $( ".validateTips" ).removeClass( "ui-state-highlight", 1500 );
  }, 500 );
}

function checkLength( o, n, min, max ) {
  if ( o.val().length > max || o.val().length < min ) {
    o.addClass( "ui-state-error" );
    if (max == min){
      if (max == 2){
        updateTips( "Длинна поля " + n + " должна быть " + min + " символа." );
      }
      if (max == 7){
        updateTips( "Длинна поля " + n + " должна быть " + min + " символов." );
      }
    } else {
      updateTips( "Длинна поля " + n + " должна быть между " +
        min + " и " + max + " символами." );
    }
    return false;
  } else {
    return true;
  }
}

function checkRegexp( o, regexp, n ) {
  if ( !( regexp.test( o.val() ) ) ) {
    o.addClass( "ui-state-error" );
    updateTips( n );
    return false;
  } else {
    return true;
  }
}
