var calculate = false;
function CheckNumericKeyInfo(char, mozChar)
{
    calculate = false;
    if(mozChar != null) {
        if((mozChar > 45 && mozChar <= 57 && mozChar != 47) || mozChar == 0 || char == 8 || mozChar == 13) RetVal = true;
        else {
            RetVal = false;
        }
    } else {
        if((char > 45 && char <= 57 && char != 47) || char == 13) RetVal = true;
        else {
            RetVal = false;
        }
    }
    return RetVal;
}
// проверяет валидность значений формы регистрации заявки
function chkAll(www_path, action){

    var i = document.forms['request'];
    var Error = "";
    var Cyrilic = /[А-Яа-я ]/;
    var Numbers = /[0-9]/;
    var email1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
    var email2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
    var re_str = /[^\s+]/;

    if (!i.amount_cur.value) {
        Error += "- Сумма введена некорректно\n";
    }

    if (i.customer.value == 'to') {
        if (i.currency_id.value == 2 && parseFloat(i.amount_cur.value) < parseFloat(i.min_in_wmz.value)) {
            Error += "- Минимальная сумма пополнения "+i.min_in_wmz.value+" WMZ\n";
        }
        if (i.currency_id.value == 3 && parseFloat(i.amount_cur.value) < parseFloat(i.min_in_wmr.value)) {
            Error += "- Минимальная сумма пополнения "+i.min_in_wmr.value+" WMR\n";
        }
    } else {
        if (i.currency_id.value == 2 && parseFloat(i.amount_cur.value) < parseFloat(i.min_out_wmz.value)) {
            Error += "- Минимальная сумма для вывода "+i.min_out_wmz.value+" WMZ\n";
        }
        if (i.currency_id.value == 3 && parseFloat(i.amount_cur.value) < parseFloat(i.min_out_wmr.value)) {
            Error += "- Минимальная сумма для вывода "+i.min_out_wmr.value+" WMR\n";
        }
    }

    if (i.bank.value == 'alfabank' || i.bank.value == 'telebank' ||
        i.bank.value == 'prombank' || i.bank.value == 'eleksnet' || i.bank.value == 'qiwi') {
        if (i.customer.value == 'from')
            Error += "- Выбран недоступный для совершения операции сервис\n";
    }

    if (i.customer.value == 'to') {
        if ( i.account_number.value.length == 13 && i.currency_id.value != 8 ){
            if (isNaN(i.account_number.value)) {
                if (i.currency_id.value == 2) {
                    a_num = i.account_number.value.split("z");
                    if (!a_num[1]) a_num = i.account_number.value.split("Z");
                    if (!a_num[1] || a_num[1].length < 12 || (isNaN(a_num[1]) == true)) Error += "- Номер кошелька введен некорректно\n"
                } else {
                    a_num = i.account_number.value.split("r");
                    if (!a_num[1]) a_num = i.account_number.value.split("R");
                    if (!a_num[1] || a_num[1].length < 12 || (isNaN(a_num[1]) == true)) Error += "- Номер кошелька введен некорректно\n"
                }
            } else Error += "- Номер кошелька введен некорректно\n";
        } else if (i.account_number.value.length == 14 && i.currency_id.value == 8) {
            if(isNaN(i.account_number.value)){
                Error += "- Номер кошелька введен некорректно\n";
            }
        } else {
            Error += "- Номер кошелька введен некорректно\n";
        }
    }

    if(!Cyrilic.test(i.last_name.value)){
        Error += "- Фамилия введена некорректно\n";
    }
    if(!Cyrilic.test(i.first_name.value)){
        Error += "- Имя введено некорректно\n";
    }
    if(!Cyrilic.test(i.patronymic.value)){
        Error += "- Отчество введено некорректно\n";
    }
    if (email1.test(i.email.value) || !email2.test(i.email.value)) {
        Error += "- E-mail введен некорректено\n";
    }
    if (i.customer.value == 'from') {
        if (isNaN(i.bank_account.value) || !i.bank_account.value)
            Error += "- Номер счета получателя введен некорректено\n";
        if (i.bank.value == 'otherbank') {
            if (isNaN(i.bank_bik.value) || !i.bank_bik.value)
                Error += "- БИК банка получателя введен некорректено\n";
            if (!re_str.test(i.bank_name.value))
                Error += "- Название банка получателя введено некорректено\n";
        }
        if (isNaN(i.wmid.value) || !i.wmid.value || i.wmid.value.length < 12)
            Error += "- Wmid введен некорректено\n";
    }
    if (isNaN(i.icq.value)/* || (i.icq.value.length < 9 && i.icq.value.length > 0)*/) {
        Error += "- Номер ICQ введен некорректено\n";
    }

    if(Error != ""){
        alert(Error);
    } else {
        if (calculate == true) {
            SendRequest(www_path, action);
        }
    }
}

function escapeEx(str) {
     var ret = '';
     for (i=0; i<str.length; i++)
      {
          var n = str.charCodeAt(i);
          if (n >= 0x410 && n <= 0x44F)
               n -= 0x350;
          else if (n == 0x451)
               n = 0xB8;
          else if (n == 0x401)
               n = 0xA8;
          if ((n < 65 || n > 90) && (n < 97 || n > 122) && n < 256)
          {
               if (n < 16)
                    ret += '%0'+n.toString(16);
               else
                    ret += '%'+n.toString(16);
          }
          else
               ret += String.fromCharCode(n);
     }
     return ret;
}

function get_http()
{
    var xmlhttp;
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp = false;
        }
    }
    return xmlhttp;
}

// получает ajax-ом контент страницы
function GetContent(url, parameters, onload_function, properties)
{
  if(!this.ajax)
  {
      this.ajax = new Object();
    ajax.http = get_http();
    ajax.working = false;
    ajax.rebuild = false;
  }

  if (ajax.rebuild)
      ajax.http = get_http();

  if (!ajax.working && ajax.http)
  {
    ajax.http.open("POST", url, true);
    ajax.http.onreadystatechange = function()
    {
      if (ajax.http.readyState == 4)
      {
          ajax.rebuild = true;
           ajax.working = false;
        if (onload_function)
            onload_function(ajax.http.responseText);
      }
      else
      {
      }
    }
    ajax.working = true;
    ajax.http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.http.setRequestHeader("Content-length", parameters.length);
    ajax.http.setRequestHeader("Connection", "close");
    ajax.http.send(parameters);
  }
  if(!ajax.http)
  {
  }
}

// рассчитывает сколько заплатить клиенту / сколько должен заплатить клиент
function CalcCurrency(www_path) {
    var request = false;
    this.request = get_http();
    request = this.request;
    var i = document.forms['request'];

      if (i.customer.value == 'to') {
          document.getElementById("operation").innerHTML = 'Отдадите (рублей)*';
      }	else {
          document.getElementById("operation").innerHTML = 'Получите (рублей)*';
      }

      var url = www_path+"/request.php";
      parameters = "city_id=1&type_id="+i.customer.value+"&amount="+i.amount_cur.value+"&currency_id="+i.currency_id.value+"&command=calc&bank_alias="+i.bank.value;
      request.onreadystatechange = CalcCurrencyResponse;
      request.open('POST', url, true);
      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      request.setRequestHeader("Content-length", parameters.length);
      request.setRequestHeader("Connection", "close");
      request.send(parameters);
}

function CalcCurrencyResponse() {
    if (request.readyState == 4) {
        if (request.status == 200) {
            var response = request.responseText;
            document.forms['request'].amount_rub.value = response;
            calculate = true;
           }
    }
}

// записываем/редактируем заявку
function SendRequest(www_path, action) {

    var i = document.forms['request'];
    var bank_text = false;

    if (i.bank.value == 'alfabank' || i.bank.value == 'telebank' ||
        i.bank.value == 'prombank' || i.bank.value == 'eleksnet' || i.bank.value == 'qiwi') {
        action = 'simple_request';
        for (var t = 0; t < i.bank.options.length; t++) {
            if (i.bank.options[t].value == i.bank.value) bank_text = i.bank.options[t].text;
        }
    }

    var url = www_path+"/request.php";
    parameters = "currency_id="+i.currency_id.value+
                 "&customer="+i.customer.value+
                 "&amount_cur="+i.amount_cur.value+
                 "&amount_rub="+i.amount_rub.value+
                 "&account_number="+i.account_number.value+
                 "&last_name="+escapeEx(i.last_name.value)+
                 "&first_name="+escapeEx(i.first_name.value)+
                 "&patronymic="+escapeEx(i.patronymic.value)+
                 "&email="+i.email.value+
                 "&icq="+i.icq.value+
                 "&note="+escapeEx(i.note.value)+
                 "&bank_alias="+i.bank.value+
                 "&bank_text="+escapeEx(bank_text)+
                 "&bank_account="+i.bank_account.value+
                 "&bank_bik="+i.bank_bik.value+
                 "&bank_name="+escapeEx(i.bank_name.value)+
                 "&wmid="+i.wmid.value+
                 "&command="+action;
   if (action == 'edit') {
   parameters += "&id="+i.id.value+
                   "&link="+i.link.value;
   }
      GetContent(url, parameters, SendRequestResponse, false);
}

function SendRequestResponse(response) {
    var i = document.forms['request'];
    if (i.bank.value == 'alfabank' || i.bank.value == 'telebank' || i.bank.value == 'prombank' || i.bank.value == 'eleksnet' || i.bank.value == 'qiwi') {
        alert('Ваша заявка принята.\nУведомление о заявке, а также реквизиты для оплаты были отправлены на ваш e-mail.\nСпасибо, что Вы выбрали наш сервис!');
        window.location = i.www_path.value+"/";
    } else document.getElementById("wm").innerHTML = response;
}

// удаляем заявку из базу
function DeleteRequest(www_path, id) {
    var request = false;
    this.request = get_http();
    request = this.request;

      var url = www_path+"/request.php";
      parameters = "command=delete&id="+id;
      request.onreadystatechange = DeleteRequestResponse;
      request.open('POST', url, true);
      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      request.setRequestHeader("Content-length", parameters.length);
      request.setRequestHeader("Connection", "close");
      request.send(parameters);
}

function DeleteRequestResponse(response) {
    if (request.readyState == 4) {
        if (request.status == 200) {
            if (request.responseText) {
                alert("Ваша заявка удалена.");
                //url = request.responseText.split("status");
                window.location = request.responseText;
            }
           }
    }
}

// оплата заявки
function PayRequest(www_path, id, bank_alias, service) {
    var request = false;
    this.request = get_http();
    request = this.request;

      var url = www_path+"/request.php";
      parameters = "command=pay"+"&id="+id+"&bank_alias="+bank_alias+"&service="+escapeEx(service);
      request.onreadystatechange = PayRequestResponse;
      request.open('POST', url, true);
      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      request.setRequestHeader("Content-length", parameters.length);
      request.setRequestHeader("Connection", "close");
      request.send(parameters);
}

function PayRequestResponse() {
    if (request.readyState == 4) {
        if (request.status == 200) {
            if (request.responseText) {
            document.getElementById("wm").innerHTML = request.responseText;
            }
           }
    }
}

// оплата заявки
function PayReq(www_path, id) {
    var request = false;
    this.request = get_http();
    request = this.request;

      var url = www_path+"/request.php";
      parameters = "command=pay2"+"&id="+id;
      request.onreadystatechange = PayReqResponse;
      request.open('POST', url, true);
      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      request.setRequestHeader("Content-length", parameters.length);
      request.setRequestHeader("Connection", "close");
      request.send(parameters);
}

function PayReqResponse() {
    if (request.readyState == 4) {
        if (request.status == 200) {
            if (request.responseText) {
                alert("Заявка оплачена.");
                window.location = request.responseText;
            }
           }
    }
}

// подготавливаем форму редактирования заявки
function PrepareEditRequestForm(www_path, id, bank_alias) {
      var url = www_path+"/request.php";
      parameters = "command=prepare_edit&id="+id+"&www_path="+www_path+"&bank_alias="+bank_alias;
      GetContent(url, parameters, PrepareEditRequestFormResponse, false);
}

function PrepareEditRequestFormResponse(response) {
    document.getElementById("wm").innerHTML = response;
    var i = document.forms['request'];
    i.currency_id.value = i.currency_id_h.value;
    i.customer.value = i.customer_h.value;
    i.amount_cur.value = i.amount_cur_h.value;
    i.amount_rub.value = i.amount_rub_h.value;
    i.account_number.value = i.account_number_h.value;
    i.last_name.value = i.last_name_h.value;
    i.first_name.value = i.first_name_h.value;
    i.patronymic.value = i.patronymic_h.value;
    i.email.value = i.email_h.value;
    i.bank_account.value = i.bank_account_h.value;
    i.bank_bik.value = i.bank_bik_h.value;
    i.bank_name.value = i.bank_name_h.value;
    i.wmid.value = i.wmid_h.value;
    i.icq.value = i.icq_h.value;
    i.note.value = i.note_h.value;
    i.bank.value = i.bank_alias.value;
    CorrectionForm();
}

// Заполняем форму, если пользователь зарегистрирован
function OnLoadRegistrationForm(bank_alias, operation) {
    if (bank_alias && operation) {
        var i = document.forms['request'];
        i.customer.value = operation;
        i.bank.value = bank_alias;
        i.last_name.value = i.last_name_h.value;
        i.first_name.value = i.first_name_h.value;
        i.patronymic.value = i.patronymic_h.value;
        i.email.value = i.email_h.value;
        if (i.icq_h.value != 0) i.icq.value = i.icq_h.value;
        CorrectionForm();
   }
}

// Корректируем форму под вид операции
function CorrectionForm() {
    var i = document.forms['request'];
    if (i.customer.value == 'from') {
        document.getElementById('account_number_tr').style.display = "none";
        document.getElementById('wmid').style.display = "";

        for (var t = 0; t < i.bank.options.length; t++) {
            if (i.bank.options[t].value == 'alfabank' || i.bank.options[t].value == 'telebank' ||
            i.bank.options[t].value == 'prombank' || i.bank.options[t].value == 'eleksnet' || i.bank.options[t].value == 'qiwi') {
                i.bank.options[t].disabled = true;
                i.bank.options[t].style.color = "graytext";
            }
        }

        document.getElementById('bank_account_tr').style.display = "";
        if (i.bank.value == 'alfabank-online') document.getElementById('account_text').innerHTML = "Номер счета получателя*";
        if (i.bank.value == 'telebank-online') document.getElementById('account_text').innerHTML = "УНК получателя*";
        if (i.bank.value == 'prombank-online') document.getElementById('account_text').innerHTML = "Номер клиента*";
        if (i.bank.value == 'otherbank') {
            document.getElementById('account_text').innerHTML = "Номер счета получателя*";
            document.getElementById('bank_bik_tr').style.display = "";
            document.getElementById('bank_name_tr').style.display = "";
        } else {
            document.getElementById('bank_bik_tr').style.display = "none";
            document.getElementById('bank_name_tr').style.display = "none";
        }

    } else {
        document.getElementById('account_number_tr').style.display = "";
        document.getElementById('bank_account_tr').style.display = "none";
        document.getElementById('wmid').style.display = "none";

        for (var t = 0; t < i.bank.options.length; t++) {
            if (i.bank.options[t].value == 'alfabank' || i.bank.options[t].value == 'telebank' ||
            i.bank.options[t].value == 'prombank' || i.bank.options[t].value == 'eleksnet' || i.bank.options[t].value == 'qiwi') {
                i.bank.options[t].disabled = false;
                i.bank.options[t].style.color = "black";
            }
        }

        document.getElementById('bank_bik_tr').style.display = "none";
        document.getElementById('bank_name_tr').style.display = "none";

    }
}

// Выставляем счет клиенту при выводе wm
function Bill(id, service, bank_alias, www_path, currency, orderid, wmid, amount_cur) {

    document.getElementById('buttons').style.display = 'none';
    document.getElementById('progress').style.display = '';

    var request = false;
    this.request = get_http();
    request = this.request;

      var url = www_path+"/request.php";
      parameters = "orderid="+orderid+
                 "&wmid="+wmid+
                 "&amount="+amount_cur+
                 "&currency="+currency+
                 "&service="+service+
                 "&bank_alias="+bank_alias+
                 "&command=bill"+
                 "&id="+id;
      request.onreadystatechange = BillResponse;
      request.open('POST', url, true);
      request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      request.setRequestHeader("Content-length", parameters.length);
      request.setRequestHeader("Connection", "close");
      request.send(parameters);


}

function BillResponse() {
    if (request.readyState == 4) {
        if (request.status == 200) {
            if (request.responseText == 111) {
                document.getElementById('buttons').style.display = '';
                document.getElementById('progress').style.display = 'none';
                alert("Произошла ошибка во время выписки счета.\nПопробуйте отредактировать заявку и выполнить действие снова.");
            } else document.getElementById("wm").innerHTML = request.responseText;
           }
    }
}