// Вспомогательные функции // (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 = "\n\n" + "\n\n\n" + nodeById(tagid).innerHTML() + "\n\n"; var printWP = window.open("","printWebPart"); printWP.document.open(); printWP.document.write(html); printWP.document.close(); printWP.print(); } }