function imgWinOpen(url, width, height, isScrollable){
    var doScroll = 'yes';
    if(isScrollable == undefined){
        doScroll = 'auto';
    }
    wndW = width+20;
    wndH = height+20;
    wndX = (screen.availWidth-wndW)/2;
    wndY = (screen.availHeight-wndH)/2;
    this.popupWindow = window.open(url,"img_win","toolbar=no,location=no,status=no,menubar=yes,scrollbars="+doScroll+",resizable,alwaysRaised,dependent,titlebar=no,width="+wndW+",height="+wndH+",left="+wndX+",top="+wndY);
}

function setCookie(sName, sValue, iHours){
  var oDate = new Date();
  if(typeof(iHours) == "undefined"){
    iHours = 1;
  }
  oDate.setHours(oDate.getHours() + iHours);
  delCookie(sName);
  document.cookie = sName + "=" + escape(sValue) + "; path=/; expires="+oDate.toGMTString();
}

function delCookie(sName) {
    if(getCookie(sName)){
        document.cookie = sName + "=" + "; path=/ ;expires=Thu, 01-Jan-1970 00:00:01 GMT";
    }
}

function getCookie(sName){
    var aCookie = document.cookie.split("; ");
    var value = "";
    for(var i = 0; i < aCookie.length; i++){
      var aCrumb = aCookie[i].split("=");
      if(sName == aCrumb[0]){
          if(typeof(aCrumb[1]) == 'undefined'){
            value = null;
          }else{
              value = unescape(aCrumb[1]);
          }
          return value;
      }
    }
    return null;
}

function setHeaderImage(){
    var maxImagesNumber = 10;
    var imageNumber = 1;
    var cookieImageNumber = getCookie('headerImageNumber');
    if(cookieImageNumber != null){
        imageNumber = parseInt(cookieImageNumber) + 1;
    }
    if(imageNumber > maxImagesNumber){
        imageNumber = 1;
    }
    setCookie('headerImageNumber', imageNumber);
    document.getElementById('headerImage').src = '/design/images/head_' + imageNumber + '.jpg';
}

function checkSearchForm(obj){
    if(obj.phrase.value == ''){
        alert('Введите фразу для поиска');
        obj.phrase.focus();
        return false;
    }
    return true;
}

function checkFeedBackForm(obj){
    if(obj.name.value == ''){
        alert('Напишите ваши фамилию, имя, отчество');
        obj.name.focus();
        return false;
    }
    if(obj.email.value == ''){
        alert('Напишите ваше e-mail или контактный телефон');
        obj.email.focus();
        return false;
    }
    if(obj.message.value == ''){
        alert('Напишите вопрос, отзыв или предложение');
        obj.message.focus();
        return false;
    }
    return true;
}

function checkFeedBackJurcreditForm(obj){
    if(obj.name.value == ''){
        alert('Введите наименование предприятия');
        obj.name.focus();
        return false;
    }
    if(obj.inn.value == ''){
        alert('Введите ИНН предприятия');
        obj.inn.focus();
        return false;
    }
    if(obj.business_type.value == ''){
        alert('Введите вид деятельности');
        obj.business_type.focus();
        return false;
    }
    if(obj.address.value == ''){
        alert('Введите фактический адрес предприятия');
        obj.address.focus();
        return false;
    }
    if(obj.phone.value == ''){
        alert('Укажите контактный телефон');
        obj.phone.focus();
        return false;
    }
    if(obj.email.value == ''){
        alert('Укажите электронный адрес');
        obj.email.focus();
        return false;
    }
    if(obj.contact_name.value == ''){
        alert('Введите контактное лицо и должность');
        obj.contact_name.focus();
        return false;
    }
    if(!obj.required_credit.checked && !obj.required_operations.checked && !obj.required_payments.checked && !obj.required_deposit.checked && !obj.required_other_check.checked){
        alert('Выберите интересующую банковскую услугу');
        return false;
    }
    if(obj.required_other_check.checked && obj.required_other.value == ''){
        alert('Введите интересующую банковскую услугу');
        obj.required_other.focus();
        return false;
    }

    if(obj.how.value == ''){
        alert('Укажите источник информации об услугах нашего Банка');
        obj.how.focus();
        return false;
    }
    return true;
}

function checkFaqForm(obj){
    if(obj.name.value == ''){
        alert('Напишите ваши фамилию, имя, отчество');
        obj.name.focus();
        return false;
    }
    if(obj.email.value == ''){
        alert('Напишите ваше e-mail или контактный телефон');
        obj.email.focus();
        return false;
    }
    if(obj.question.value == ''){
        alert('Напишите ваш вопрос');
        obj.question.focus();
        return false;
    }
    return true;
}

function switchCurrencyBlock(){
    var encashBlock = document.getElementById('encashBlock');
    var cashlessBlock = document.getElementById('cashlessBlock');
    var currencyBlockSwitch = document.getElementById('currencyBlockSwitch');
    if(encashBlock.style.display == 'block'){
        encashBlock.style.display = 'none';
        cashlessBlock.style.display = 'block';
        currencyBlockSwitch.innerText = 'Наличная конвертация';
    }else{
        cashlessBlock.style.display = 'none';
        encashBlock.style.display = 'block';
        currencyBlockSwitch.innerText = 'Безналичная конвертация';
    }
}

function changeFacturaPassword(){
    if(SKSObject && SKSObject.changeKeyPwd){
        if(SKSObject.changeKeyPwd(1)){
            alert('Пароль изменен.');
        }else{
            alert('Ошибка при изменении пароля');
        }
    }else{
        alert('Объект, требуемый для изменения пароля не установлен или установлен неверно.');
    }
} 

//
// Calendar object
//

function calendarBlock(parentDivName, startYear, startMonth){
    this.parentDivName = parentDivName;
    this.oDivCalendar = null;
    this.selectedYear = startYear;
    this.selectedMonth = startMonth;
    this.oDivElements = new Array();
    this.monthNames = new Array('Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь');
    
    this.init = function(){
        var objDate = new Date();
        this.selectedYear = typeof(this.selectedYear) == 'undefined' ? objDate.getFullYear() : this.selectedYear;
        this.selectedMonth = typeof(this.selectedMonth) == 'undefined' ? objDate.getMonth() : this.selectedMonth - 1;

        this.oDivCalendar = document.getElementById(this.parentDivName);
        for(i = 0; i < 37; i++){
            this.oDivElements[i] = document.createElement('div');
            this.oDivElements[i].className = 'calendarCell';
            this.oDivElements[i].id = 'calendarCell' + i;
            this.oDivElements[i] = this.oDivCalendar.appendChild(this.oDivElements[i]);
        }
        this.set();
    }
    
    this.set = function(setYear, setMonth){
        var objDate = new Date();
        var selectedYear = typeof(setYear) == 'undefined' ? this.selectedYear : setYear;
        var selectedMonth = typeof(setMonth) == 'undefined' ? this.selectedMonth : setMonth-1;
        var monthDaysNumber = new Array(31,(selectedYear % 4 == 0 ? 29 : 28),31,30,31,30,31,31,30,31,30,31);
        var currentDay = (objDate.getFullYear() == selectedYear && objDate.getMonth() == selectedMonth ? objDate.getDate() : -1);
        objDate.setYear(selectedYear);
        objDate.setMonth(selectedMonth);
        objDate.setDate(1);
        var firstDay = objDate.getDay();
        firstDay = (firstDay == 0 ? 7 : firstDay);
        
        document.getElementById('calendarMonth').innerHTML = this.monthNames[selectedMonth];
        document.getElementById('calendarYear').innerHTML = selectedYear;
        
        for(i = 0; i < firstDay-1; i++){
            this.oDivElements[i].innerHTML = '';
        }
        for(i = firstDay + monthDaysNumber[selectedMonth]-1; i < 37; i++){
            this.oDivElements[i].style.display = 'none';
        }
        for(i = 1; i <= monthDaysNumber[selectedMonth]; i++){
            this.oDivElements[firstDay + i - 2].innerHTML = i;
            this.oDivElements[firstDay + i - 2].style.display = 'block';
            if(currentDay >= 0 && i == currentDay){
                this.oDivElements[firstDay + i - 2].className = 'calendarCellCurrent';
            }else{
                this.oDivElements[firstDay + i - 2].className = 'calendarCell';
            }
        }
    }
    this.init();
    
    this.setNext = function(){
        this.selectedMonth ++;
        if(this.selectedMonth > 11){
            this.selectedMonth = 0;
            this.selectedYear ++;
        }
        this.set();
    }
    
    this.setPrevious = function(){
        this.selectedMonth --;
        if(this.selectedMonth < 0){
            this.selectedMonth = 11;
            this.selectedYear --;
        }
        this.set();
    }
}

//
// Deposit calculator functions
//

function clearSelectBox(obj){
    for(var i = obj.options.length-1; i >= 0; i--){
        obj.options[i] = null;
    }
}

function formatNumber(number, returnAsNumber){
    if(typeof(returnAsNumber) == 'indefined' || !returnAsNumber){
        returnAsNumber = false;
    }
    number = Math.round(number * 100);
    if(returnAsNumber){
        number = number / 100;
    }else{
        number = number.toString().replace(/^(.*?)(.{2})$/, '$1.$2');
        if(number.charAt(0) == '.'){
            number = '0' + number;
        }
        if(number == '0'){
            number = '0.00';
        }
    }
    return number;
}

var currencyNames = new Array('Рубли', 'Доллары США', 'Евро', 'Евро+Доллары США');
var capitalizationNames = new Array('В конце срока договора', 'Еженедельно', 'Ежемесячно', 'Ежеквартально', 'Ежемесячно в конце месяца');
function depositCalculatorChange(itemType, oForm){
    var depositId = oForm.deposit.value;
    // Set currencies
    if(itemType <= 0){
        clearSelectBox(oForm.currency);
        for(i = 0; i < 4; i++){
            if(window.depositsData[depositId][i].length > 0){
                oForm.currency.options[oForm.currency.options.length] = new Option(currencyNames[i], i, false, false);
            }
        }
    }
    var currencyId = oForm.currency.value;
    if(itemType <= 1){
        // Set capitalizations
        clearSelectBox(oForm.capitalization);
        for(i = 0; i < window.capitalizationsData[depositId][currencyId].length; i++){
            oForm.capitalization.options[oForm.capitalization.options.length] = new Option(capitalizationNames[window.capitalizationsData[depositId][currencyId][i]], window.capitalizationsData[depositId][currencyId][i], false, false);
        }
        // Set periods
        clearSelectBox(oForm.period);
        var usedPeriods = new Object();
        for(i = 0; i < window.depositsData[depositId][currencyId].length; i++){
            currentPeriod = window.depositsData[depositId][currencyId][i][0];
            if(typeof(usedPeriods[currentPeriod]) == 'undefined'){
                usedPeriods[currentPeriod] = true;
                oForm.period.options[oForm.period.options.length] = new Option(currentPeriod, currentPeriod, false, false);
            }
        }
        // Set currency note
        if(currencyId == 3){
            document.getElementById('depositAmountSpecial').style.display = 'block';
        }else{
            document.getElementById('depositAmountSpecial').style.display = 'none';
        }
    }
    if(itemType <= 2){
        // Set minimum amount
        var percentData = window.depositsData[depositId][currencyId];
        var period = oForm.period.value;
        for(i = 0; i < percentData.length; i++){
            if(percentData[i][0] == period){
                document.getElementById('depositMinimumAmount').innerHTML = 'Минимальная сумма вклада: ' + percentData[i][1];
                break;
            }
        }
    }
}

function formatDate(oDate){
    var month = (oDate.getMonth() + 1).toString();
    var day = oDate.getDate().toString();
    var year = oDate.getFullYear().toString();
    if(day.length == 1){
        day = '0' + day;
    }
    if(month.length == 1){
        month = '0' + month;
    }
    return day + '.' + month + '.' + year;
}

function getNextPeriod(oDate, startDay, capitalization){
    var monthDaysNumber = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
    var nextDate = new Date();
    nextDate.setTime(oDate.getTime());
    var nextPeriod = 0;
    /* monthly, but with the same date in current month (e.g. from 7th to 26th) */
    if(capitalization == 0){
        if(oDate.getDate() >= startDay){
            var currentMonth = oDate.getMonth();
            var nextMonth = currentMonth + 1;
            var nextYear = oDate.getFullYear() + (currentMonth == 11 ? 1 : 0);
        }else{
            var currentMonth = oDate.getMonth();
            var nextMonth = currentMonth;
            var nextYear = oDate.getFullYear();
        }
        if(nextMonth > 11){
            nextMonth = 0;
        }
        if(nextYear % 4 == 0){
            monthDaysNumber[1] = 29;
        }
        var nextDay = Math.min(startDay, monthDaysNumber[nextMonth]);
        nextDate.setYear(nextYear);
        nextDate.setMonth(nextMonth, nextDay);
        
        nextPeriod = Math.round((nextDate.getTime() - oDate.getTime()) / 86400000);
    /* weekly */
    }else if(capitalization == 1){
        nextPeriod = 7;
    /* monthly */
    }else if(capitalization == 2){
        var currentMonth = oDate.getMonth();
        var nextYear = oDate.getFullYear() + (currentMonth == 11 ? 1 : 0);
        if(nextYear % 4 == 0){
            monthDaysNumber[1] = 29;
        }
        var nextMonth = currentMonth + 1;
        if(nextMonth > 11){
            nextMonth = 0;
        }
        var nextDay = Math.min(startDay, monthDaysNumber[nextMonth]);
        nextDate.setYear(nextYear);
        nextDate.setMonth(nextMonth, nextDay);
        
        nextPeriod = Math.round((nextDate.getTime() - oDate.getTime()) / 86400000);
    /* quarter */
    }else if(capitalization == 3){
        var currentMonth = oDate.getMonth();
        var nextYear = oDate.getFullYear() + (currentMonth + 3 > 11 ? 1 : 0);
        if(nextYear % 4 == 0){
            monthDaysNumber[1] = 29;
        }
        var nextMonth = currentMonth + 3;
        if(nextMonth > 11){
            nextMonth = 0;
        }
        var nextDay = Math.min(startDay, monthDaysNumber[nextMonth]);
        nextDate.setYear(nextYear);
        nextDate.setMonth(nextMonth, nextDay);
        
        nextPeriod = Math.round((nextDate.getTime() - oDate.getTime()) / 86400000);
    /* last month day */
    }else if(capitalization == 4){
        var currentDay = oDate.getDate();
        var currentMonth = oDate.getMonth();
        var currentYear = oDate.getFullYear();
        var daysInMonth = monthDaysNumber[currentMonth];
        if(currentMonth == 1 && currentYear % 4 == 0){
            daysInMonth ++;
        }
        if(daysInMonth > currentDay){
            nextDate.setDate(daysInMonth);
        }else{
            currentMonth += 1;
            if(currentMonth > 11){
                currentMonth = 0;
                currentYear += 1;
            }
            currentDay = monthDaysNumber[currentMonth];
            if(currentMonth == 1 && currentYear % 4 == 0){
                daysInMonth ++;
            }
            nextDate.setYear(currentYear);
            nextDate.setMonth(currentMonth, currentDay);
        }
        nextPeriod = Math.round((nextDate.getTime() - oDate.getTime()) / 86400000);
    }
    return nextPeriod;
}

function addResultRow(oResult, date, percent, total){
    var divHeaderDate = document.createElement('div');
    divHeaderDate.className = 'depositResultDate';
    divHeaderDate.innerHTML = date;
    oResult.appendChild(divHeaderDate);
    
    var divHeaderPercent = document.createElement('div');
    divHeaderPercent.className = 'depositResultPercent';
    divHeaderPercent.innerHTML = percent;
    oResult.appendChild(divHeaderPercent);
    
    var divHeaderTotal = document.createElement('div');
    divHeaderTotal.className = 'depositResultTotal';
    divHeaderTotal.innerHTML = total;
    oResult.appendChild(divHeaderTotal);
}

function calculateFormula(oDate, amount, period, percent){
    var resultPercent = 0;
    oDateStart = new Date(oDate);
    oDateEnd = new Date(oDate);
    periodLeft = period;
    while(1){
        daysInYear = oDateStart.getFullYear() % 4 == 0 ? 366 : 365;
        oDateEnd.setMonth(11, 31);
        dateDifference = Math.round((oDateEnd.getTime() - oDateStart.getTime()) / 86400000);
        if(dateDifference >= periodLeft){
            resultPercent += (amount * percent * periodLeft) / (daysInYear * 100);
            break;
        }else{
            resultPercent += (amount * percent * dateDifference) / (daysInYear * 100);
            periodLeft -= dateDifference;
            oDateStart.setTime(oDateEnd.getTime());
            oDateEnd.setYear(oDateStart.getFullYear() + 1);
        }
    }
    resultPercent = formatNumber(resultPercent);
    return resultPercent;
}

function depositCalculate(oForm){
    
    var oResult = document.getElementById('depositCalcResult');
    oResult.innerHTML = '';
    
    var depositId = oForm.deposit.value;
    var currencyId = oForm.currency.value;
    var period = oForm.period.value;
    var amount = parseFloat(oForm.amount.value);
    var capitalization = oForm.capitalization.value;

    if(isNaN(amount)){
        alert('Сумма вклада задана неверно');
        return;
    }
    
    // Check the amount
    var percentData = window.depositsData[depositId][currencyId];
    for(i = 0; i < percentData.length; i++){
        if(percentData[i][0] == period){
            if(amount < percentData[i][1]){
                alert('Минимальная сумма вклада, соответствующая выбранным данным: ' + percentData[i][1]);
                return;
            }
            break;
        }
    }
    
    // Create result header
    var divHeaderDate = document.createElement('div');
    divHeaderDate.className = 'depositResultDateHeader';
    divHeaderDate.innerHTML = 'Дата';
    oResult.appendChild(divHeaderDate);
    
    var divHeaderPercent = document.createElement('div');
    divHeaderPercent.className = 'depositResultPercentHeader';
    divHeaderPercent.innerHTML = 'Проценты';
    oResult.appendChild(divHeaderPercent);
    
    var divHeaderTotal = document.createElement('div');
    divHeaderTotal.className = 'depositResultTotalHeader';
    divHeaderTotal.innerHTML = 'Общая сумма';
    oResult.appendChild(divHeaderTotal);
    
    var oDate = new Date();
    if(capitalization == 0){
        var percent = 0;
        for(i = 0; i < percentData.length; i++){
            if(percentData[i][0] == period && amount >= percentData[i][1] && percentData[i][2] > percent){
                percent = percentData[i][2];
            }
        }
    
        var resultPercent = calculateFormula(oDate, amount, period, percent);
        resultPercent = formatNumber(resultPercent);

        oDate.setTime(oDate.getTime() + period * 86400000);
        var resultDate = formatDate(oDate);

        addResultRow(oResult, resultDate, resultPercent, formatNumber(parseFloat(resultPercent) + amount));
    }else{
        var calculatedPeriod = 0;
        var calculatedAmount = amount;
        var startDay = oDate.getDate();
        var isLastIteration = false;
        while(1){
        
        
        
        
        
        
        
        
        
            var periodAddon = getNextPeriod(oDate, startDay, capitalization);
            if(periodAddon == 0){
                break;
            }
            
            var percent = 0;
            var resultPercent = 0;
            var percentType = parametersData[depositId][currencyId][1];
            
            if(calculatedPeriod + periodAddon > period){
                periodAddon = period - calculatedPeriod;
                if(periodAddon == 0){
                    break;
                }
                currentParameters = parametersData[depositId][currencyId];
                if(currentParameters[0] > 0){
                    percent = currentParameters[0];
                    percentType = 2;
                }
                isLastIteration = true;
            }
            
            if(percentType == 0){
                for(i = 0; i < percentData.length; i++){
                    if(percentData[i][0] == period && calculatedAmount >= percentData[i][1] && percentData[i][2] > percent){
                        percent = percentData[i][2];
                    }
                }
            }else if(percentType == 1){
                var lastAppliedPeriod = 1000000;
                for(i = 0; i < percentData.length; i++){
                    if(calculatedPeriod <= percentData[i][0] && amount >= percentData[i][1] && lastAppliedPeriod > percentData[i][0]){
                        lastAppliedPeriod = percentData[i][0];
                        percent = percentData[i][2];
                    }
                }
            }

            resultPercent = calculateFormula(oDate, calculatedAmount, periodAddon, percent);
        
            calculatedPeriod += periodAddon;
            oDate.setTime(oDate.getTime() + periodAddon * 86400000);

            
            
            
            
            
            
            
            
            
            
            var resultDate = formatDate(oDate);
            addResultRow(oResult, resultDate, resultPercent, formatNumber(parseFloat(resultPercent) + calculatedAmount));
            
            calculatedAmount += parseFloat(resultPercent);
            
            if(isLastIteration){
                break;
            }
        }
    }
    if(currencyId == 3){
        document.getElementById('depositAmountSpecialResult').style.display = 'block';
    }else{
        document.getElementById('depositAmountSpecialResult').style.display = 'none';
    }
}

var bMonthChanged = false;
function creditCalculatorChange(itemType, oForm, doStartTimer){
    if(typeof(creditCalculatorChangeTimer) != 'undefined'){
        clearTimeout(creditCalculatorChangeTimer);
    }
    
    if(typeof(doStartTimer) != 'undefined' && doStartTimer){
        creditCalculatorChangeTimer = setTimeout(function(param1, param2){return function(){creditCalculatorChange(param1, param2)}}(itemType, oForm), 400);
        return;
    }
    
    if(!bMonthChanged){
        var iCurrentMonth = (new Date()).getMonth();
        oForm.month.options[iCurrentMonth].selected = true;
        bMonthChanged = true;
    }
    
    var creditId = oForm.credit.value;
    var checkUserPayment = window.parametersData[creditId][0];
    if(itemType <= 0){
        var iCurrentMonth = oForm.months.value;
        clearSelectBox(oForm.months);
        for(i = 0; i < window.creditsData[creditId].length; i++){
            for(ii = window.creditsData[creditId][i][0]; ii <= window.creditsData[creditId][i][1]; ii++){
                oForm.months.options[oForm.months.options.length] = new Option(ii, ii, iCurrentMonth == ii, iCurrentMonth == ii);
            }
        }
        
        document.getElementById('fieldTitleAmount').style.display = checkUserPayment == 1 ? 'block' : 'none';
        document.getElementById('fieldValuePaymentAmount').style.display = checkUserPayment == 1 ? 'block' : 'none';
        
        document.getElementById('fieldTitleMethod').style.display = window.parametersData[creditId][2] >= 2 ? 'block' : 'none';
        document.getElementById('fieldValueMethod').style.display = window.parametersData[creditId][2] >= 2 ? 'block' : 'none';
        if(window.parametersData[creditId][2] < 2){
            oForm.calculate_method.selectedIndex = window.parametersData[creditId][2];
        }
    }
    var creditMonths = parseInt(oForm.months.value);
    var creditPayment = parseFloat(oForm.payment_amount.value);
    var availableAmount = 0;
    if(isNaN(creditPayment)){
        creditPayment = 0;
    }else{
        var availableAmount = creditPayment * creditMonths * window.parametersData[creditId][1] / 100;
    }
    
    var minCreditAmount = 0;
    var maxCreditAmount = 0;
    for(i = 0; i < window.creditsData[creditId].length; i++){
        if(creditMonths >= window.creditsData[creditId][i][0] && creditMonths <= window.creditsData[creditId][i][1]){
            minCreditAmount = window.creditsData[creditId][i][3];
            maxCreditAmount = window.creditsData[creditId][i][4];
            break;
        }
    }
    
    if(checkUserPayment == 0){
        availableAmount = maxCreditAmount;
    }
    if(itemType <= 2 || itemType <= 0 && checkUserPayment == 0){
        if(checkUserPayment == 0 || creditPayment > 0 && availableAmount > minCreditAmount){
            document.getElementById('creditIsNotAvailable').style.display = 'none';
            document.getElementById('creditAvailableAmount').style.display = 'inline';
            if(minCreditAmount > 0){
                document.getElementById('aAmountFromTitle').style.display = 'inline';
                document.getElementById('aAmountFrom').style.display = 'inline';
                document.getElementById('aAmountFrom').innerHTML = formatNumber(minCreditAmount);
            }else{
                document.getElementById('aAmountFromTitle').style.display = 'none';
                document.getElementById('aAmountFrom').style.display = 'none';
            }
            if(maxCreditAmount > 0){
                document.getElementById('aAmountToTitle').style.display = 'inline';
                document.getElementById('aAmountTo').style.display = 'inline';
                document.getElementById('aAmountTo').innerHTML = formatNumber(Math.min(availableAmount, maxCreditAmount));
            }else{
                document.getElementById('aAmountToTitle').style.display = 'none';
                document.getElementById('aAmountTo').style.display = 'none';
            }
        }else if(creditPayment > 0){
            document.getElementById('creditAvailableAmount').style.display = 'none';
            document.getElementById('creditIsNotAvailable').style.display = 'inline';
        }else{
            document.getElementById('creditAvailableAmount').style.display = 'none';
        }
        
    }
    var requiredCredit = parseFloat(oForm.credit_amount.value);
    if(requiredCredit > 0 && (requiredCredit < minCreditAmount || requiredCredit > availableAmount)){
        oForm.credit_amount.className = 'creditIsUnavailable';
    }else{
        oForm.credit_amount.className = 'creditIsAvailable';
    }
}

function printCreditResultHeader(oResult, hasCommission){
    var divItem = document.createElement('div');
    divItem.className = 'creditResultDateHeader';
    divItem.innerHTML = 'Дата';
    oResult.appendChild(divItem);
    
    var divItem = document.createElement('div');
    divItem.className = 'creditResultPaymentHeader';
    divItem.innerHTML = 'Сумма ежемесячного платежа';
    oResult.appendChild(divItem);
    
    var divItem = document.createElement('div');
    divItem.className = 'creditResultDebtHeader';
    divItem.innerHTML = 'Платеж в счет погашения основного долга';
    oResult.appendChild(divItem);
    
    var divItem = document.createElement('div');
    divItem.className = 'creditResultPercentHeader';
    divItem.innerHTML = 'Платеж процентов';
    oResult.appendChild(divItem);
    
    if(hasCommission){
        var divItem = document.createElement('div');
        divItem.className = 'creditResultCommissionHeader';
        divItem.innerHTML = 'Комиссия<br>и другие платежи';
        oResult.appendChild(divItem);
    }
    
    var divItem = document.createElement('div');
    divItem.className = 'creditResultRestHeader';
    divItem.innerHTML = 'Остаток основного долга';
    oResult.appendChild(divItem);
    
    var brItem = document.createElement('br');
    brItem.clear = 'both';
    oResult.appendChild(brItem);
}

function printCreditResultRow(oResult, valDate, valPayment, valDebt, valPercent, valCommission, valRest){
    var divItem = document.createElement('div');
    divItem.className = 'creditResultDate';
    divItem.innerHTML = valDate;
    oResult.appendChild(divItem);
    
    var divItem = document.createElement('div');
    divItem.className = 'creditResultPayment';
    divItem.innerHTML = valPayment;
    oResult.appendChild(divItem);
    
    var divItem = document.createElement('div');
    divItem.className = 'creditResultDebt';
    divItem.innerHTML = valDebt;
    oResult.appendChild(divItem);
    
    var divItem = document.createElement('div');
    divItem.className = 'creditResultPercent';
    divItem.innerHTML = valPercent;
    oResult.appendChild(divItem);
    
    if(valCommission >= 0){
        var divItem = document.createElement('div');
        divItem.className = 'creditResultCommission';
        divItem.innerHTML = valCommission;
        oResult.appendChild(divItem);
    }
    
    var divItem = document.createElement('div');
    divItem.className = 'creditResultRest';
    divItem.innerHTML = valRest;
    oResult.appendChild(divItem);
    
    var brItem = document.createElement('br');
    brItem.clear = 'both';
    oResult.appendChild(brItem);
}

function creditCalculate(oForm){
    // 1. Get and check base parameters
    var creditId = oForm.credit.value;
    var creditMonths = parseInt(oForm.months.value);
    var creditPayment = parseFloat(oForm.payment_amount.value);
    var requiredCredit = parseFloat(oForm.credit_amount.value);
    var checkUserPayment = window.parametersData[creditId][0];

    if(checkUserPayment == 1 && isNaN(creditPayment)){
        alert('Зарплата указана неверно');
        return;
    }
    if(isNaN(requiredCredit)){
        alert('Сумма кредита указана неверно');
        return;
    }

    var minCreditAmount = 0;
    var maxCreditAmount = 0;
    for(i = 0; i < window.creditsData[creditId].length; i++){
        if(creditMonths >= window.creditsData[creditId][i][0] && creditMonths <= window.creditsData[creditId][i][1]){
            minCreditAmount = window.creditsData[creditId][i][3];
            maxCreditAmount = window.creditsData[creditId][i][4];
            break;
        }
    }

    var calculateMethod = oForm.calculate_method.selectedIndex;
    var isFirstPeriodCommissions = window.parametersData[creditId][3];
    var calculateDate = window.parametersData[creditId][4];
    var onetimeCommission = window.parametersData[creditId][5];
    var onetimeCommissionMin = window.parametersData[creditId][6];
    var onetimeCommissionFixed = window.parametersData[creditId][7];
    var periodAmountCommission = window.parametersData[creditId][8];
    var periodRestCommission = window.parametersData[creditId][9];
    var hasPeriodCommission = (periodAmountCommission > 0 || periodRestCommission > 0);

    var availableAmount = creditPayment * creditMonths * window.parametersData[creditId][1] / 100;
    if(requiredCredit < minCreditAmount || requiredCredit > maxCreditAmount || availableAmount < requiredCredit){
        alert('Указанная сумма кредита не может быть одобрена');
        return;
    }

    // 2. Get percent value
    var percentValue = 0;
    for(i = 0; i < window.creditsData[creditId].length; i++){
        if(creditMonths >= window.creditsData[creditId][i][0] && creditMonths <= window.creditsData[creditId][i][1]){
            percentValue = window.creditsData[creditId][i][2];
            break;
        }
    }
    if(percentValue == 0){
        alert('Произошла ошибка в рассчете');
        return;
    }
    
    // 3. Calculate and show onetime commission & percent
    document.getElementById('creditCalcResultPercent').style.display = 'block';
    document.getElementById('creditCalcResultPercentValue').innerHTML = percentValue;
    if(onetimeCommission > 0 || onetimeCommissionFixed > 0){
        var onetimePercent = formatNumber(onetimeCommissionFixed + Math.max(onetimeCommissionMin, requiredCredit * onetimeCommission / 100));
        document.getElementById('creditCalcOnetimeCommission').style.display = 'block';
        document.getElementById('creditCalcOnetimeCommissionValue').innerHTML = onetimePercent;
    }
    
    // 4. Init result table
    var oResult = document.getElementById('creditCalcResult');
    oResult.innerHTML = '';
    printCreditResultHeader(oResult, hasPeriodCommission);
    
    // 5. Calculate and show every row
    var oCurrentDate = new Date();
    var startDay = calculateDate == 0 ? oCurrentDate.getDate() : calculateDate;
    var startMonth = parseInt(oForm.month.value) - 1;
    var startYear = oCurrentDate.getMonth() > startMonth ? oCurrentDate.getFullYear() + 1 : oCurrentDate.getFullYear();
    oCurrentDate.setMonth(startMonth);
    oCurrentDate.setYear(startYear);
    
    var currentAmount = requiredCredit;
    var creditMonthAddon = isFirstPeriodCommissions ? 1 : 0;
    var percentValueAddon = periodRestCommission * 12;
    periodAmountCommission = formatNumber(requiredCredit * periodAmountCommission / 100, true);
    if(calculateMethod == 0){
        var annuity = formatNumber(((currentAmount * (percentValue + percentValueAddon) / 1200) / (1 - Math.pow(1 + (percentValue + percentValueAddon) / 1200, -creditMonths + creditMonthAddon))) + periodAmountCommission, true);
    }
    var totalPaymentAmount = 0;
    var totalDebtAmount = 0;
    var totalDebtPercent = 0;
    var totalPeriodCommission = 0;
    for(i = 0; i < creditMonths; i++){
        var periodDays = getNextPeriod(oCurrentDate, startDay, (i == 0 ? 0 : 2));
        var debtPercent = parseFloat(calculateFormula(oCurrentDate, currentAmount, periodDays, percentValue));
        var periodCommission = 0;
        if(hasPeriodCommission){
            if(periodAmountCommission > 0){
                periodCommission += periodAmountCommission;
            }
            if(periodRestCommission > 0){
                periodCommission += formatNumber(currentAmount * periodRestCommission / 100, true);;
            }
        }
        oCurrentDate.setTime(oCurrentDate.getTime() + periodDays * 86400000);
        if(i == 0 && isFirstPeriodCommissions){
            var debtAmount = 0;
            var paymentAmount = debtPercent + periodCommission;
        }else if(i + 1 == creditMonths){
            var debtAmount = formatNumber(currentAmount, true);
            var paymentAmount = debtAmount + debtPercent + periodCommission;
        }else{
            if(calculateMethod == 0){
                var debtAmount = formatNumber(annuity - debtPercent - periodCommission, true);
                var paymentAmount = annuity;
            }else{
                var debtAmount = formatNumber(requiredCredit / (creditMonths - creditMonthAddon), true);
                var paymentAmount = debtAmount + debtPercent + periodCommission;
            }
        }
        currentAmount -= debtAmount;
        printCreditResultRow(oResult, formatDate(oCurrentDate), formatNumber(paymentAmount), formatNumber(debtAmount), formatNumber(debtPercent), (hasPeriodCommission ? formatNumber(periodCommission) : -1), formatNumber(currentAmount));
        
        totalPaymentAmount += paymentAmount;
        totalDebtAmount += debtAmount;
        totalDebtPercent += debtPercent;
        totalPeriodCommission += periodCommission;
    }

    printCreditResultRow(oResult, '<strong>Итого:</strong>', formatNumber(totalPaymentAmount), formatNumber(totalDebtAmount), formatNumber(totalDebtPercent), (hasPeriodCommission ? formatNumber(totalPeriodCommission) : -1), '&nbsp;');
}