// Вспомогательные функции
// (C) Владимир Медведев
// waldemar.medvedev@gmail.com

(function() {
	// Кэширование обращений к getElementById
	var cache = {}
	window.nodeById = function(id) {
		return cache[id] ? cache[id] : cache[id] = document.getElementById(id);
	}
})()

Array.prototype.max = function() {
    var max = this[0];
    var len = this.length;
    for (var i = 1; i < len; i++) if (this[i] > max) max = this[i];
    return max;
}

Array.prototype.min = function() {
    var min = this[0];
    var len = this.length;
    for (var i = 1; i < len; i++) if (this[i] < min) min = this[i];
    return min;
}

ret_val = 0;
function podbor() {
    // Переменные
    var cost = [];
    var tarif = [];

    // Читаем форму
    if(!isNaN(parseInt(nodeById('f1').value))) cost[1] = parseInt(nodeById('f1').value); else cost[1] = 0; // ПК
    if(!isNaN(parseInt(nodeById('f2').value))) cost[2] = parseInt(nodeById('f2').value); else cost[2] = 0; // Сервер
    if(!isNaN(parseInt(nodeById('f3').value))) cost[3] = parseInt(nodeById('f3').value); else cost[3] = 0; // Принтеры и т.п.
    if(!isNaN(parseInt(nodeById('f4').value))) cost[4] = parseInt(nodeById('f4').value); else cost[4] = 0; // Маршрутизаторы
    if(!isNaN(parseInt(nodeById('f5').value))) cost[5] = parseInt(nodeById('f5').value); else cost[5] = 0; // Коммутаторы
    if(!isNaN(parseInt(nodeById('f6').value))) cost[6] = parseInt(nodeById('f6').value); else cost[6] = 0; // Беспроводная сеть
    if(!isNaN(parseInt(nodeById('f7').value))) cost[7] = parseInt(nodeById('f7').value); else cost[7] = 0; // Плановые выезды
    if(!isNaN(parseInt(nodeById('f8').value))) cost[8] = parseInt(nodeById('f8').value); else cost[8] = 0; // Экстренные выезды

    // Экономный
    if (cost[1] < 26) {
        tarif[1]  = cost[1] * 900 * (1-(Math.ceil(cost[1]/5)-1)*0.0833); // ПК
        tarif[2]  = cost[1] * 1000 * (1-(Math.ceil(cost[1]/5)-1)*0.0833); // ПК
        tarif[3]  = cost[1] * 1100 * (1-(Math.ceil(cost[1]/5)-1)*0.0833); // ПК
    } else {
        tarif[1]  = cost[1] * 900 * 0.5835; // ПК
        tarif[2]  = cost[1] * 1000 * 0.5835; // ПК
        tarif[3]  = cost[1] * 1100 * 0.5835; // ПК
    }
    
    tarif[1] += cost[2] * 1500; // Сервер
    tarif[1] += cost[3] * 150;  // Принтеры и т.п.
    tarif[1] += cost[4] * 1500; // Маршрутизаторы
    tarif[1] += cost[5] * 350;  // Коммутаторы
    tarif[1] += cost[6] * 400;  // Беспроводная сеть
    tarif[1] += cost[7] * 150;  // Плановые выезды
    tarif[1] += cost[8] * 850;  // Экстренные выезды

    // Базовый
    tarif[2] += cost[2] * 1500; // Сервер
    tarif[2] += cost[3] * 200;  // Принтеры и т.п.
    tarif[2] += cost[4] * 2000; // Маршрутизаторы
    tarif[2] += cost[5] * 450;  // Коммутаторы
    tarif[2] += cost[6] * 500;  // Беспроводная сеть
    tarif[2] += cost[7] * 250;  // Плановые выезды
    tarif[2] += cost[8] * 950;  // Экстренные выезды

    // Расширенный
    tarif[3] += cost[2] * 1500; // Сервер
    tarif[3] += cost[3] * 250;  // Принтеры и т.п.
    tarif[3] += cost[4] * 2500; // Маршрутизаторы
    tarif[3] += cost[5] * 550;  // Коммутаторы
    tarif[3] += cost[6] * 600;  // Беспроводная сеть
    tarif[3] += cost[7] * 400;  // Плановые выезды
    tarif[3] += cost[8] * 1000; // Экстренные выезды

    // Стоимость внеочередных выездов
    if (cost[1] > 0) proc = (1+(Math.ceil(cost[1]/5)-1)*0.1111); else proc = 0;

    nodeById('add1').innerHTML = Math.floor(1000 * proc);
    nodeById('add2').innerHTML = Math.floor(950 * proc);
    nodeById('add3').innerHTML = Math.floor(850 * proc);

    // Суммарная стоимость обслуживания
    nodeById('tarif1').innerHTML = Math.floor(parseInt(tarif[1]));
    nodeById('tarif2').innerHTML = Math.floor(parseInt(tarif[2]));
    nodeById('tarif3').innerHTML = Math.floor(parseInt(tarif[3]));
    
    // Параметры тарифного плана в форме
    document.forms.Forms.A5.value = ret_val + "/" + cost[1] + "/" + cost[2] + "/" + cost[3] + "/" + cost[4] + "/" + cost[5] + "/" + cost[6] + "/" + cost[7] + "/" + cost[8];
}

function tarif(m) {
    switch(m) {
        case 1:
            ret_val = 1;
        break;

        case 2:
            ret_val = 2;
        break;

        case 3:
            ret_val = 3;
        break;

        default:
            ret_val = 0;
    }
}

function audit() {
    // Переменные
    var audit = [];

    audit[0] = 0;
    for (i = 1; i < 8; i++) { 
        if(nodeById('o'+i).checked) audit[i] = nodeById('o'+i).value; else audit[i] = 0;
    }

    if(!isNaN(parseInt(nodeById('o').value))) tarif = parseInt(nodeById('o').value); else tarif = 0;

    // Стоимость аудита
    nodeById('tarif').innerHTML = Math.floor(parseInt(tarif * (300 + audit.max() * 200)));

    // Параметры аудита в форме
    document.forms.Forms.A5.value = tarif + "/" + audit.max() + "/" + audit[1] + "/" + audit[2] + "/" + audit[3] + "/" + audit[4] + "/" + audit[5] + "/" + audit[6] + "/" + audit[7];

}

function print_web_part(tagid) {
    if (tagid) {
        var html = "<HTML>\n<HEAD>\n" + "\n</HEAD>\n<BODY>\n" + nodeById(tagid).innerHTML() + "\n</BODY>\n</HTML>";
        var printWP = window.open("","printWebPart");
        printWP.document.open();
        printWP.document.write(html);
        printWP.document.close();
        printWP.print();
    }
}


