function ajaxSubmit(obj, result, url, errorTrigger, successTrigger) {
  $('#loading').ajaxStart(function() {
    obj.style.cursor = 'wait';
    $(this).show();
    $('#loading2').show();
    //$(result).slideUp(800);
  }).ajaxStop(function(){
    $(this).hide();
    $('#loading2').hide();
    obj.style.cursor = '';
    //$(result).slideDown(1000);
  });
  // Add custom headers before every call (HTTP_X_METHOD:Ajax)
//   $().ajaxSend(function(a,r,o){
//     jQuery.each((o.headers || {}), function(i) {
//       r.setRequestHeader(i, this);
//     });
//    });

  url = url || obj.getAttribute('action');
  url = url + '.ajax';

  $.ajax({
    type: 'POST',
    url: url,
    data: $(obj).serialize(),
    success: function(data) {
      if (typeof successTrigger == 'function') successTrigger();
      return formSuccess(data, result);
    },
    cache: false,
    error: function(xhr, status) {
      if (typeof errorTrigger == 'function') errorTrigger();
      try {
        statusText = xhr.statusText;
      } catch(e) {
        statusText = '';
      }
      alert('W tej chwili podstrona nie jest dostępna. ' + statusText);
    },
    //headers: {'X-Method':'Ajax'},
    timeout: 60000
  })
  return false;
}
function formSuccess(data, result, hash) {
    $(result+'>div:last').hide();
    var e = 5;
    var s = data.indexOf('id="')+4;
    if (s>0) e = data.indexOf('"', s+4);
    var id = data.substring(s,e);
    if (s>0 && e>s) $('#'+id).remove();
    $(result).append(data);
}
function ajaxGet(result, url) {
  $('#loading').ajaxStart(function() {
    document.body.style.cursor = 'wait';
    $(this).show();
    $('#loading2').show();
    //$(result).slideUp(800);
  }).ajaxStop(function(){
    $(this).hide();
    $('#loading2').hide();
    document.body.style.cursor = '';
    //$(result).slideDown(1000);
  });
  $.ajax({
    type: 'GET',
    url: url,
    success: function(data) {
      return formSuccess(data, result);
    },
    error: function(xhr, status) {
      alert('W tej chwili podstrona nie jest dostępna. '+xhr.statusText);
    },
    timeout: 8000
  })
  return false;
}
function ajaxTip(url, result) {
  $('#loading').ajaxStart(function() {
    document.body.style.cursor = 'wait';
  }).ajaxStop(function(){
    document.body.style.cursor = '';
  });
  $.ajax({
    type: 'GET',
    url: url,
    timeout: 8000,
    success: function(data) {
      $(result).val(data);
    }
  })
  return false;
}
function ajaxTip2(obj, url, result, sep) {
  $('#loading').ajaxStart(function() {
    document.body.style.cursor = 'wait';
  }).ajaxStop(function(){
    document.body.style.cursor = '';
  });
  $.ajax({
    type: 'GET',
    url: url,
    data: $(obj).serialize(),
    cache: false,
    timeout: 8000,
    success: function(data) {
      $(result).val(data);
    }
  })
  return false;
}
function serverAdd(obj, name) {
  var e = $('<input type="hidden" name="'+ name +'" value="Wybierz pakiet" />');
  $(obj).append(e);
  return true;
}
function dsOrder(obj) {
  var productList = new Array('productList-', '.checked');
  var el = obj.form.elements;
  var i=0;
  while(true) {
    try {
      if (el[productList[0] + i + productList[1]].checked) return true;
      i++;
    } catch(e) { break; }
  }
  alert('Proszę wybrać dowolny produkt lub usługę.');
  return false;
}

function onKeyPressDisallow(e) {
  var key = window.event ? e.keyCode : e.which;
  if (arguments.length>2 && key==13) { $('#'+arguments[2]).click(); return false; }
  var keychar = String.fromCharCode(key);
  var reg = /[`~!@#$%^&*()+=\[\]\\\/<>,;:{}()"'\| \t?]/;
  var result = !reg.test(keychar);
  if (result && arguments.length>1 && arguments[1]!=false) { result = !arguments[1].test(keychar); }
  return result;
}
// not work on Ctrl + v, etc...
function onKeyPressAllow(e, regex) {
  var key = window.event ? e.keyCode : e.which;
  var keychar = String.fromCharCode(key);
  return key < 32 || regex.test(keychar);
}

function onKeyPressSubmit(e, id) {
  var key = window.event ? e.keyCode : e.which;
  if (key==13) { $('#'+id).click(); return false; }
  return true;
}

function onChangeAllowDomain(obj) {
  var reg = /[a-ząćęłńóśźż0-9.\-]/;
  var v = obj.value.toLowerCase();
  obj.value = '';
  for (var i=0;i<v.length;i++) {
    var keychar = v.charAt(i);
    if (reg.test(keychar)) obj.value += keychar;
  }
}

function suffixChecked(obj,id) {
  var o = $('#'+id);
  if (o) o.checked = obj.checked;
}

function vat(value) {return Math.round(parseFloat(value) * 122) / 100;}

function setNewPrice(obj, price_values) {
  $('#'+obj.name.replace(/\./g,'\\.')+'1').text(price_values[obj.selectedIndex*2]);
  $('#'+obj.name.replace(/\./g,'\\.')+'3').text(vat(price_values[obj.selectedIndex*2]));
  var e2 = $('#'+obj.name.replace(/\./g,'\\.')+'2');
  if (e2.get(0)) e2.text(price_values[obj.selectedIndex*2+1]);
  var e4 = $('#'+obj.name.replace(/\./g,'\\.')+'4');
  if (e4.get(0)) e4.text(vat(price_values[obj.selectedIndex*2+1]));
  // zmienic rowniez atrybut w html aby ajax zapamietal zmiane jesli wrocimy
  for (var i=0;i<obj.options.length;i++) {
    if (i!=obj.selectedIndex) { obj.options[i].removeAttribute('selected'); }
    else { obj.options[i].setAttribute('selected', 'selected'); }
  }
}

function setCompany(obj, listDisabled, listEnabled) {
  for (var i=0;i<listDisabled.length;i++) {
    obj.form.elements[listDisabled[i]].disabled = !Boolean(parseInt(obj.value));
  }
  for (var i=0;i<listEnabled.length;i++) {
    obj.form.elements[listEnabled[i]].disabled = Boolean(parseInt(obj.value));
  }
}
/* przy przypisywaniu domeny do serwera w td */
function assignDStd(obj, checkboxName, list2InputAndSelectIds) {
  if (obj.checked) {
    obj.form.elements[checkboxName].checked = false;
    var el = $('#'+list2InputAndSelectIds[0]);
    el.disabled = false;
    el.parentNode.style.display = '';
    var el = $('#'+list2InputAndSelectIds[1]);
    el.disabled = true;
    el.parentNode.style.display = 'none';
    var el = $('#'+list2InputAndSelectIds[2]);
    if (el) { el.disabled = true; el.parentNode.style.display = 'none'; }
  }
  else {
    /* select tag */
    var el = $('#'+list2InputAndSelectIds[2]);
    if (el) {
      el.disabled = false;
      el.parentNode.style.display = '';
    }
    else {
      /* input */
      var el = $('#'+list2InputAndSelectIds[1]);
      el.disabled = false;
      el.parentNode.style.display = '';
      obj.form.elements[checkboxName].checked = true;
    }
    var el = $('#'+list2InputAndSelectIds[0]);
    el.disabled = true;
    el.parentNode.style.display = 'none';
  }
}
function checkAssignDS(obj, count, prefix) {
  var cds = new Array(count);
  var k=0;
  for (var i=0;i<count;i++) {
    cds[i] = false;
    var el = obj.form.elements[prefix+i+'.domain'];
    for (j=0;j<el.length;j++) {
      if (el[j].disabled == false) { k=j; if (el[j].value.length>1) { cds[i] = true; }}
    }
    if (cds[i]==false) {
      alert('Proszę wybrać domenę dla serwera nr ' + (i+1) + '.');
      el[k].focus();
      return false;
    }
    var el = obj.form.elements[prefix+i+'.login'];
    if (el.value.length<3) {
      alert('Login musi zawierać przynajmniej 3 znaki dla serwera nr ' + (i+1) + '.');
      el.focus();
      return false;
    }
    var el = obj.form.elements[prefix+i+'.password'];
    if (el.value.length<5) {
      alert('Hasło musi zawierać przynajmniej 5 znaki dla serwera nr ' + (i+1) + '.');
      el.focus();
      return false;
    }
  }
  return true;
}
function actionForm(obj, radioName, url) {
  var check = false;
  obj.form.setAttribute('action', url);
  var rs = obj.form.elements[radioName];
  for (var i=0;i<rs.length;i++) if (rs[i].checked) { check=true; break;}
  if (check) return true;
  else { alert("Proszę wybrać metodę płatności online."); return false; }
}
function hasAttribute(obj, attr) {
  if (obj.hasAttribute)
    return obj.hasAttribute(attr);
  else
    return (obj.attributes[attr] ? true : false);
}
