﻿//var OrigchkMakeInvoice = document.getElementById("ctl00_main_chkMakeInvoice").checked;
//var OrigtxtValidFrom = document.getElementById("ctl00_main_txtValidFrom").value;
// Inicializálja a naptárt.
//function initializeCalendar() {
//  Calendar.setup({
//    inputField: getRegisteredElement("txtValidFrom"),
//    ifFormat: "%Y-%m-%d",
//    showsTime: false,
//    firstDay: 1,
//    weekNumbers: true,
//    electric: false,
//    button: "cldFromBtn"
//  });

//}

var actualValidFrom;
// A termék kiválasztásakor hívódik meg. Megjeleníti a rendszám, stb. megadását
// lehetővé tevő panelt.
function selectProduct(productCode) {
//  var isYearly = productCode.match(/365$/) == "365";
//  if (isYearly) {
//    var hdnSelectedProductCode = getRegisteredElement("hdnSelectedProductCode");
//    hdnSelectedProductCode.value = "";
//    window.open('eves-autopalya-matrica-elorendeles.aspx', '_self');
//  }
  setSelectedProduct(productCode);
  showVignettePanel(productCode);
  switchInvoicePanelVisibility();
  return false;
}

// Megjeleníti a felhasználási adatok paneljét.
function showVignettePanel(productCode) {

  var selectedProduct = getProduct(productCode);
  if (selectedProduct != null) {
    var dvVignette = getRegisteredElement("dvVignette");
    dvVignette.style.display = "";

    var dvTermsOfUse = getRegisteredElement("dvTermsOfUse");
    dvTermsOfUse.style.display = "";

    var tblSubmit = getRegisteredElement("tblSubmit");
    tblSubmit.style.display = "";
    // var tblSubmit = getRegisteredElement("tblSubmit");
    // tblSubmit.style.display = "";

    var isPlaza = selectedProduct.IsPayPlazaPaymentType;

    $("#trMultiVignette").toggle(isPlaza);
    // ha nem lehet többet venni akkor töröljük
    if (!isPlaza) {
      $("#" + ids["hdnMultiPlateNumber"]).val("");
      $(".multivignette").remove();
    }
    // éves matrica kezelés
    var now = new Date();
    var curm = now.getMonth();
    curm++;
    var nowString = now.getFullYear() + '-' + curm + '-' + now.getDate();

    var isYearly = selectedProduct.ProductCode.match(/365$/) == "365";
    if (isYearly) {
      actualValidFrom = $("#" + ids["txtValidFrom"]).val();
      $("#" + ids["txtValidFrom"]).val($("#yearValidFrom").html());
    }
    else {
      $("#" + ids["txtValidFrom"]).val(actualValidFrom);
    }

    //$("#yearValidFrom").val($("#" + ids["txtValidFrom"]).val());
    $("#yearValidFrom").toggle(isYearly);
    $("#" + ids["txtValidFrom"]).toggle(!isYearly);
    $(".ui-datepicker-trigger").toggle(!isYearly);
    $("#multiValidityStart").attr("disabled", isYearly);
    $(".validityYearlyInst").toggle(isYearly);
    $(".validityInst").toggle(!isYearly);
    // éves matrica kezelés vége

    window.location.hash = "data";

    var txtLicencePlateNumber = getRegisteredElement("txtLicencePlateNumber");
    txtLicencePlateNumber.focus();
  }
}

// Megjeleníti/eltünteti a számlázási adatok paneljét.
function switchInvoicePanelVisibility() {
  var dvInvoice = getRegisteredElement("dvInvoice");
  var chkMakeInvoice = getRegisteredElement("chkMakeInvoice");
  if (chkMakeInvoice.checked) {
    dvInvoice.style.display = "";

    var txtCustomerName = getRegisteredElement("txtCustomerName");
    txtCustomerName.focus();
  } else {
    dvInvoice.style.display = "none";
  }
}

// Megjeleníti a kiválasztott termék nevét és leírását,
// és a kódját elmenti egy hidden mezőbe.
function setSelectedProduct(productCode) {
  var selectedProduct = getProduct(productCode);

  if (selectedProduct != null) {
    var tdSelectedProduct = getRegisteredElement("tdSelectedProduct");
    replaceCellText(tdSelectedProduct, selectedProduct.Name);

    var tdProductDescription = getRegisteredElement("tdProductDescription");
    replaceCellText(tdProductDescription, selectedProduct.Description);

    var hdnSelectedProductCode = getRegisteredElement("hdnSelectedProductCode");
    hdnSelectedProductCode.value = productCode;
  }
}
function getProduct(productCode) {
  var selectedProduct = null;
  for (var productIndex in products) {
    if (products[productIndex].ProductCode == productCode) {
      selectedProduct = products[productIndex];
      break;
    }
  }
  return selectedProduct;
}

// visszadja kiválaszott termékadatait
//function getSelectedProduct() {
//  var hdnSelectedProductCode = getRegisteredElement("hdnSelectedProductCode");
//  return getProduct(hdnSelectedProductCode.value);
//}

// Kicseréli egy tábla cella szövegét.
function replaceCellText(cell, newText) {
  while (cell.hasChildNodes()) {
    cell.removeChild(cell.lastChild);
  }
  cell.appendChild(document.createTextNode(newText));
}

// Ellenőrzi, hogy a mező ki van-e töltve, feltéve, hogy a
// "Számlát kérek" jelölőnégyzet be van jelölve.
function validateRequiredInvoiceTextField(src, args) {
  var chkMakeInvoice = getRegisteredElement("chkMakeInvoice");
  args.IsValid = !chkMakeInvoice.checked || args.Value.length > 0;
}

//function validateRequiredPlateNumber(src, args) {
//  var selected = getSelectedProduct();
//  if (selected.IsPayPlazaPaymentType) args.IsValid = true;
//  else
//    args.IsValid = getRegisteredElement("txtLicencePlateNumber").value.length > 0;
//}

// Ellenőrzi, hogy az "Elfogadom a számlaadás feltételeit" jelölőnégyzet be van-e jelölve,
// feltéve, hogy a "Számlát kérek" jelölőnégyzet be van jelölve.
function validateConditionsAcceptance(src, args) {
  var chkMakeInvoice = getRegisteredElement("chkMakeInvoice");
  var chkAcceptConditions = getRegisteredElement("chkAcceptConditions");
  args.IsValid = !chkMakeInvoice.checked || chkAcceptConditions.checked;
}

function validateTermsOfUseAcceptance(src, args) {
  var chkAcceptTermsOfUse = getRegisteredElement("chkAcceptTermsOfUse");
  args.IsValid = chkAcceptTermsOfUse.checked;
}

$(function () {
  var ctrlDown = false, altDown = false, ctrlvPressed = false;
  var ctrlKey = 17, altKey = 18, vKey = 86, cKey = 67;
  var txtEmail2 = $("#" + ids["txtEmail2"]);
  var hdnValidFromMaxDate = $("#" + ids["hdnValidFromMaxDate"]);

  $(document).keydown(function (e) {
    if (e.keyCode == altKey) altDown = true;
    if (e.keyCode == ctrlKey) ctrlDown = true;
  }).keyup(function (e) {
    if (e.keyCode == altKey) altDown = false;
    if (e.keyCode == ctrlKey) ctrlDown = false;
  });

  txtEmail2.keydown(function (e) {
    if (ctrlDown && !altDown && (e.keyCode == vKey || e.keyCode == cKey)) {
      ctrlvPressed = true;
      return false;
    }
  }).keypress(function (e) {
    if (ctrlvPressed) {
      ctrlvPressed = false;
      return false;
    }
  });

  txtEmail2.bind("contextmenu", function (e) {
    return false;
  });

  actualValidFrom = $("#" + ids["txtValidFrom"]).val();
  var multiPlateNumber = $("#multiPlateNumber"),
      multiValidityStart = $("#multiValidityStart"),
      allFields = $([]).add(multiPlateNumber).add(multiValidityStart),
      tips = $("#validateTips");

  function checkLength(o, n, min, max) {
    if (o.val().length > max || o.val().length < min) {
      o.addClass("ui-state-error");
      updateTips(getJsLabel('jsErrMultiHeadPlateNumber').replace('{0}', n).replace('{1}', min).replace('{2}', max));
      //      updateTips("Length of " + n + " must be between " +
      //					min + " and " + max + ".");

      return false;
    } else {
      return true;
    }
  }
  function checkRegexp(o, regexp, n) {

    if (!(regexp.test(o.val()))) {
      o.addClass("ui-state-error");
      updateTips(n);

      return false;
    } else {
      return true;
    }
  }
  function checkDateGTNow(o, n) {
    alert(o.val());

    var d = new Date(o.val().substr(0, 4));
    alert(d.toString());
    return false;
  }
  function checkDateLTMaxDate(o, n) {
    return false;
  }
  function updateTips(t) {
    tips.append('<li>' + t + '</li>') //.text(t)
      .addClass("ui-state-highlight");
    setTimeout(function () {
      tips.removeClass("ui-state-highlight", 1500);
    }, 500);
  }

  $("#divMultiPlateNumber").dialog({
    autoOpen: false,
    height: 260,
    width: 520,
    resizable: false,
    modal: true,

    buttons: [
        {
          text: getJsLabel('jsAddSticker'),
          click: function () {
            var bValid = true;
            allFields.removeClass("ui-state-error");
            $("#validateTips li").remove();
            var res1 = checkLength(multiPlateNumber, getJsLabel('jsMultiPlateNumber'), 6, 12);
            var res2 = checkLength(multiValidityStart, getJsLabel('jsMultiValidityStart'), 8, 10);
            //            var res3 = checkDateGTNow(multiValidityStart, getJsLabel('jsMultiValidityStart'));
            //            var res4 = checkDateLTMaxDate(multiValidityStart, getJsLabel('jsMultiValidityStart'));
            //        bValid = bValid && checkLength(password, "password", 5, 16);

            //var res5 = checkRegexp(multiPlateNumber, /^[a-zA-Z0-9]{3,}$/i, "Username may consist of a-z, 0-9, underscores, begin with a letter.");
            bValid = res1 && res2; // && res3 && res4 && res5;
            if (bValid) {
              var newValue = $("#" + ids["hdnMultiPlateNumber"]).val() + multiPlateNumber.val() + ':' + multiValidityStart.val() + ";";
              $("#" + ids["hdnMultiPlateNumber"]).val(newValue);
              makeTable();
              $(this).dialog("close");
            }
          }
        }
      ,
        {
          text: getJsLabel('jsCancel'),
          click: function () { $(this).dialog("close"); }
        }
      ],
    close: function () {
      allFields.val("").removeClass("ui-state-error");
    }
  });

  $("#multiValidityStart").datepicker({
    showOn: "button",
    buttonImage: "images/calendar.gif",
    buttonImageOnly: true,
    dateFormat: "yy-mm-dd",
    regional: "hu",
    minDate: 0
  });
  $("#" + ids["txtValidFrom"]).datepicker({
    showOn: "button",
    buttonImage: "images/calendar.gif",
    buttonImageOnly: true,
    dateFormat: "yy-mm-dd",
    regional: "hu",
    minDate: 0
  });
  var hdnSelectedProductCode = getRegisteredElement("hdnSelectedProductCode");
  if (hdnSelectedProductCode.value != "")
    selectProduct(hdnSelectedProductCode.value);
  makeTable();
});

function makeTable() {
  var hidden = $("#" + ids["hdnMultiPlateNumber"]).val();
  if (hidden.length == 0) $("#tbMulti").empty();
  $(".multivignette").remove();
  if (hidden.length > 0) {
    var arr = hidden.split(";");
    for (i = 0; i < arr.length; i++) {
      if (arr[i].indexOf(":") > 0) {
        var arrData = arr[i].split(":");
        $("#trMultiVignette").before("<tr class='multivignette'><td class='head'>" + getJsLabel('jsMultiHeadPlateNumber') +
          "</td><td class=multiVigData><span>" + arrData[0] + "</span><button type=\"button\" class=\"vasarlas\" onclick=\"return deleteMultiPlateNumber(" + i + ")\">" +
          getJsLabel('jsMultiDeleteRow') + "</button></td><td></td></tr>" +
          "<tr class='multivignette'><td class='head'>" + getJsLabel('jsMultiStartOfValidity') + "</td><td class=multiVigData><span>" + arrData[1] + "</span></td><td></td></tr>");
      }
    }
    
  }
}
//function makeTable() {
//  var hidden = $("#" + ids["hdnMultiPlateNumber"]).val();
//  if (hidden.length == 0) $("#tbMulti").empty();
//  if (hidden.length > 0) {
//    if ($("#tbMulti tbody").length == 0)
//    //$("#tbMulti").append(
//    //      "<thead><th>" + getJsLabel('jsMultiHeadPlateNumber') +
//    //      "</th><th>" + getJsLabel('jsMultiStartOfValidity') +
//    //      "</th><th></th></thead>
//      $("#tbMulti").append("<tbody></tbody>");
//    $("#tbMulti tbody").empty();
//    var arr = hidden.split(";");
//    for (i = 0; i < arr.length; i++) {
//      if (arr[i].indexOf(":") > 0) {
//        var arrData = arr[i].split(":");
//        $("#tbMulti tbody").append("<tr><th>" + getJsLabel('jsMultiHeadPlateNumber') +
//          "</th><td>" + arrData[0] + "</td>" +
//          "<td rowspan=2><button type=\"button\" class=\"vasarlas\" onclick=\"return deleteMultiPlateNumber(" + i + ")\">" +
//          getJsLabel('jsMultiDeleteRow') + "</button></td></tr>");
//        $("#tbMulti tbody").append("<tr><th>" + getJsLabel('jsMultiStartOfValidity') + "</th><td>" + arrData[1] + "</td></tr>");
//      }
//    }

//    $("#btnAddNewVignette").toggle(arr.length <= 14);
//  }
//}

function deleteMultiPlateNumber(ix) {
  var hidden = $("#" + ids["hdnMultiPlateNumber"]);
  var newValue = "";
  var arr = hidden.val().split(";");
  for (i = 0; i < arr.length; i++) {
    if (arr[i].indexOf(":") > 0) {
      if (i != ix) newValue += arr[i] + ";";
    }
  }
  hidden.val(newValue);
  makeTable();
}

function showMultiPlateNumber() {
  $("#multiValidityStart").val($("#" + ids["txtValidFrom"]).val());
  $("#divMultiPlateNumber").dialog("open");
}

/* Hungarian initialisation for the jQuery UI date picker plugin. */
/* Written by Istvan Karaszi (jquery@spam.raszi.hu). */
jQuery(function ($) {
  $.datepicker.regional['hu'] = {
    closeText: 'bezárás',
    prevText: '&laquo;&nbsp;vissza',
    nextText: 'előre&nbsp;&raquo;',
    currentText: 'ma',
    monthNames: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június',
		'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
    monthNamesShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún',
		'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],
    dayNames: ['Vasárnap', 'Hétfö', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
    dayNamesShort: ['Vas', 'Hét', 'Ked', 'Sze', 'Csü', 'Pén', 'Szo'],
    dayNamesMin: ['V', 'H', 'K', 'Sze', 'Cs', 'P', 'Szo'],
    weekHeader: 'Hé',
    dateFormat: 'yy-mm-dd',
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: false,
    yearSuffix: ''
  };
  $.datepicker.setDefaults($.datepicker.regional['hu']);
});
