/*
    Калькулятор расчёта стоимости печати на холсте
    Версия от 14 декабря 2009 г.
*/

/* Исходные данные */

var canvasId;
var canvasName = new Array("Lomond", "Epson", "Mediatex"); // 0 - Lomond, 1 - Epson, 2 - Mediatex
var canvasWidth = new Array(new Array(610, 1067), new Array(610, 1118), new Array(914, 914)); // ширина холста, мм (L(У, Ш), E(У,Ш), M(C))
var canvasPrice = new Array(new Array(1260, 2090), new Array(1460, 2350), new Array(1600, 1600)); // цена холста, руб. за прогонный метр (L(У, Ш), E(У,Ш), M(C))

var podramnikPrice = 400; // руб/м
var natyajkaPrice = 700; // руб (fixed)
var fixativePrice = 1500; // руб/м2
var glassPrice = 1400; // руб/м2
var podlojkaPrice = 750; // руб/м2
var paspartuPrice = 1200; // руб/м2

/*  !! ВНИМАНИЕ !!
    Всё, что находится ниже, не нужно редактировать, если ты не уверен на 100% в том, что делаешь.
*/


/* Рабочие переменные */

var roll; // выбранный ролик = Array

var imageWidth; // ширина картины, см
var imageHeight; // высота картины, см
var imageSquare; // площадь изображения без полей
var imagePerimeter; // периметр изображения без полей
var costPodramnik; // стоимость подрамника
var costBaget; // стоимость рамы
var addMargins; // оставлять поля для натяжки?

var longDim, shortDim; // длинная и короткая сторона

/*
  Переключение режима администратора
*/
function switchAdminMode(event) {
  if(event.ctrlKey || event.altKey)
    if(document.getElementById("adminMode").style.display == "none")
      document.getElementById("adminMode").style.display = "block";
    else
      document.getElementById("adminMode").style.display = "none";
}


/*
  Подсчёт стоимости рамы
*/
function calcFrameCost() {
  var bagetPrice = document.getElementById("bagetPrice").value;
  var bagetWidth = document.getElementById("bagetWidth").value;
  bagetPrice = bagetPrice*(imagePerimeter + 8*bagetWidth/100)*4.2;
  return bagetPrice.toFixed(0);
}


/*
  Определение ролика для печати и стоимости печати
*/
function selectRollWidth() {
  var longRollWidthId;
  var shortRollWidthId;
  var longSidePrice;
  var shortSidePrice;

  // ищем ролик для большой стороны
  for(x in canvasWidth[canvasId]) { // Array(610, 1067)
    if(canvasWidth[canvasId][x] >= longDim) { // ширина холста больше длинной стороны изображения
      longRollWidthId = x; // сохраним индекс нужной ширины ролика
      break;
    }
  }
  if(longRollWidthId != undefined)
    longSidePrice = canvasPrice[canvasId][longRollWidthId] * shortDim / 1000;
  // ищем ролик для маленькой стороны
  for(x in canvasWidth[canvasId]) // Array(610, 1067)
    if(canvasWidth[canvasId][x] >= shortDim) { // ширина холста больше короткой стороны изображения
      shortRollWidthId = x; // сохраним индекс нужной ширины ролика
      break;
    }
  if(shortRollWidthId != undefined)
    shortSidePrice = canvasPrice[canvasId][shortRollWidthId] * longDim / 1000;
  // что вернуть?
  if((shortRollWidthId == undefined) && (longRollWidthId == undefined))
    return shortRollWidthId;
  if((longRollWidthId != undefined) && ((shortRollWidthId == undefined) || (longSidePrice < shortSidePrice)))
    roll = new Array(longRollWidthId, longSidePrice);
  if((shortRollWidthId != undefined) && ((longRollWidthId == undefined) || (longSidePrice > shortSidePrice)))
    roll = new Array(shortRollWidthId, shortSidePrice);
  if((shortSidePrice == longSidePrice))
    roll = new Array(shortRollWidthId, shortSidePrice);
  return roll;
}


/*
  Основная функция
*/
function disp_lay() {
  // какой холст - Lomond or Epson or Mediatex?
  var x=document.getElementById("canvasL");
  if(x.checked) {
    canvasId = 0; // Lomond
  } else {
    x=document.getElementById("canvasE");
    if(x.checked)
      canvasId = 1; // Epson
    else
      canvasId = 2; // Mediatex
  }
//  alert(canvasName[canvasId]);

  // преобразуем введённые размеры к миллиметрам
  imageWidth = document.getElementById("imageWidth").value * 10;
  imageHeight = document.getElementById("imageHeight").value * 10;
  // определим большую сторону
  if(imageWidth > imageHeight) {
    longDim = imageWidth;
    shortDim = imageHeight;
  } else {
    longDim = imageHeight;
    shortDim = imageWidth;
  }
  // посчитаем площадь и периметр изображения, без полей
  imageSquare = imageWidth*imageHeight/1000000; // mm2 -> m2
  imagePerimeter = (imageWidth+imageHeight)*2/1000; // mm -> m
  // добавлять поля для натяжки?
  addMargins = document.getElementById("addMargins").checked;
  longDim += 60*addMargins;
  shortDim += 60*addMargins;
  // Вычисление стоимости подрамника, натяжки
  costPodramnik = imagePerimeter*podramnikPrice;
  
  // выберем правильную ширину холста
  roll = selectRollWidth();
  if(roll == undefined) {
    document.getElementById("results").innerHTML = "<p>Невозможно напечатать такое изображение!<br />Возможно, изображение слишком большое.<br /></p>";
    document.getElementById("results").innerHTML += "<p>Наибольший допустимый размер по одной из сторон:<br />";
    document.getElementById("results").innerHTML += " &nbsp; для холста Lomond - 106 см<br />";
    document.getElementById("results").innerHTML += " &nbsp; для холста Epson - 111 см<br />";
    document.getElementById("results").innerHTML += " &nbsp; для холста Mediatex - 90 см</p>";
    return;
  }

  // Выводим результаты расчёта
  var tmpp = 0;
  var totalCost = 0;
  var resultsText = '';
  
  document.getElementById("adminMode").innerHTML = (addMargins ? "<p><strong>Добавлять поля для натяжки</strong> 3 см.</p>" : "");
  document.getElementById("adminMode").innerHTML += "<p>Размер изображения" + (addMargins ? " с полями" : "") + " = " + longDim + "x" + shortDim + " мм</p>";
  document.getElementById("adminMode").innerHTML += "<p>Площадь изображения без полей: " + imageSquare + " м<sup>2</sup></p>";
  document.getElementById("adminMode").innerHTML += "<p>Периметр изображения без полей: " + imagePerimeter + " м</p>";
  document.getElementById("adminMode").innerHTML += "<p><strong>Ширина ролика</strong>: " + canvasWidth[canvasId][roll[0]] + " мм.<br /></p>";
  
  resultsText = "<ul>\n  <li>Тип холста: " + canvasName[canvasId] + "</li>";
  
  document.getElementById("adminMode").innerHTML += "<p>Стоимость <strong>печати</strong>: " + roll[1].toFixed(0) + " руб.</p>";
  totalCost = new Number(roll[1].toFixed(0));
  if(document.getElementById("makePodramnik").checked) {
    document.getElementById("adminMode").innerHTML += "<p>Стоимость <strong>подрамника</strong>: " + costPodramnik.toFixed(0) + " руб.</p>";
    resultsText += "\n  <li>Изготовление подрамника</li>";
    totalCost += new Number(costPodramnik.toFixed(0));
  }
  if(document.getElementById("stretchToPodramnik").checked) {
    tmpp = natyajkaPrice*imageSquare;
    if(tmpp < 150) tmpp = 150;
    totalCost += new Number(tmpp.toFixed(0));
    document.getElementById("adminMode").innerHTML += "<p>Стоимость <strong>натяжки на подрамник</strong>: " + tmpp.toFixed(0) + " руб.</p>";
    resultsText += "\n  <li>Натяжка на подрамник</li>";
  }
  if(document.getElementById("applyFixative").checked) {
    tmpp = fixativePrice*imageSquare;
    totalCost += new Number(tmpp.toFixed(0));
    document.getElementById("adminMode").innerHTML += "<p>Стоимость <strong>покрытия фиксативом</strong>: " + tmpp.toFixed(0) + " руб.</p>";
    resultsText += "\n  <li>Покрытие фиксативом</li>";
  }
  if(document.getElementById("makeGlass").checked) {
    tmpp = glassPrice*imageSquare;
    totalCost += new Number(tmpp.toFixed(0));
    document.getElementById("adminMode").innerHTML += "<p>Стоимость <strong>стекла</strong>: " + tmpp.toFixed(0) + " руб.</p>";
    resultsText += "\n  <li>Стекло</li>";
  }
  if(document.getElementById("makePodlojka").checked) {
    tmpp = podlojkaPrice*imageSquare;
    totalCost += new Number(tmpp.toFixed(0));
    document.getElementById("adminMode").innerHTML += "<p>Стоимость <strong>подложки</strong>: " + tmpp.toFixed(0) + " руб.</p>";
    resultsText += "<li>Подложка</li>";
  }
  if(document.getElementById("makePaspartu").checked) {
    tmpp = paspartuPrice*imageSquare + 150;
    totalCost += new Number(tmpp.toFixed(0));
    document.getElementById("adminMode").innerHTML += "<p>Стоимость <strong>паспарту</strong>: " + tmpp.toFixed(0) + " руб.</p>";
    resultsText += "\n  <li>Паспарту</li>";
  }
//  if(document.getElementById("makeFrame").checked) {
//    tmpp = calcFrameCost();
//    totalCost += tmpp;
//    document.getElementById("adminMode").innerHTML += "<p>Стоимость <strong>рамы</strong>: " + tmpp + " руб.</p>";
//  }

  resultsText += "\n</ul>";
  document.getElementById("results").innerHTML = resultsText + "<p>Стоимость заказа: " + totalCost + " руб.</p>";
}