Array.prototype.index = function (val) {
  for (var i = 0, l = this.length; i < l; i++) {
    if (this[i] == val) return i;
  }
  return null;
}

Array.prototype.include = function (val) {
  return this.index(val) !== null;
}

jQuery.noConflict();
jQuery(document).ready(function ($) {
  var dimensions = '';

  $("input[name='is_client']").change(function () {
    if ($("input:checked[name='is_client']").val() == "0") $("#inzeroval").hide();
    else $("#inzeroval").show();
  });

  $("p#klik").click(function () {
    for (var i = 0; i < $("input:checked[name='branches[]']").length; i++) {
      alert($("input:checked[name='branches[]']")[i].value);
    }
  });

  // onclick event na bunku tabulky
  $("td").click(function () {
    $("#types td").removeClass("selected");

    for (var j = 0; j <= $(this).parent().prevAll().size(); j++) {
      for (var i = 0; i <= $(this).prevAll().size(); i++) $("#types tr").eq(j).children().eq(i).addClass("selected");
    }
    var type = $(this).attr('id').substr(1);
    $(":input[name='ad_type']").val(type);

    try {
      dimensions = ad_dimensions[type];
    } catch(e) {
      dimensions = '';
    }
    $('div#vyber p').remove();
    $('div#vyber').append('<p id="vybrany_typ">' + dimensions + ' - typ ' + type + '</p>');

    recalculate();
  });


  $("form input").change(function () {
    recalculate();
  });


  function format_price(value) {
    return (Math.round(value / 0.30126) / 100) + ' &euro; (' + Math.round(value) + ' Sk)';
  }

  //zobrazenie cenovej ponuky
  function recalculate() {
    // 1. kde chcem podat inzerciu
    var i;
    var titles = [];
	for (i = 0; i < $("#tituly_vybrane input:checked[name='selected_titles[]']").length; i++) {
      titles[i] = $("#tituly_vybrane input:checked[name='selected_titles[]']")[i].value.split('|');
    }

	// 2. typ
    var type = $('#ad_type').val();
    if (titles.length == 0 || type == 0 || validate() == false) {
      $("#kalkulacia .message").show();
      $("#kalkulacia .table").hide();
      $("#kalkulacia .buttons").hide();
      $("kalkulacia p.info").hide();
    } else {
      $("#kalkulacia .message").hide();
      $("#kalkulacia .table").show();
      $("#kalkulacia .buttons").show();
      $("kalkulacia p.info").show();
    }

	// 3. kde som uz inzeroval
    var titles_ = [];
    for (i = 0; i < $("#tituly_inzerovane input:checked[name='selected_titles[]']").length; i++) {
      titles_[i] = $("#tituly_inzerovane input:checked[name='selected_titles[]']")[i].value.substr(0, 2);
    }

    // 4. kolko inzeratov
    var counts = [];
    for (i = 0; i < $("input.number").length; i++) {
      counts[$($("input.number")[i]).attr('name').substr(11, 2)] = $($("input.number")[i]).val();
    }

	// 5. vypocitaj cenu
    var discounts = [];
    var prices = [];
    var total_price = 0;
    var price = 0;
    var count = 0;
    var discount = 0;
    for (i = 0; i < titles.length; i++) {
      //price	 = 100;
      try {
        price = ad_types[titles[i][1]][type.toLowerCase()]['SKK'];
      } catch(e) {
        price = 0;
        //alert('Zadali ste neznámy typ inzerátu.');
        return false;
      }
      count = parseInt(counts[titles[i][0]]);

      if (titles_.include(titles[i][0])) {
        // uz inzeroval: cena * jedno % zlava na kazde opakovanie * pocet opakovani
        discount = (count < 30) ? 0.01 * count : 0.3;
      } else {
        // este neinzeroval
        
        /* 
          // a) fixna zlava: 
          discount = 0.3;
        */
        
        /*
          // b) zlava je podla poctu, za kazde opakovanie 10%
          discount = count / 10;
          if (count > 5) {
			discount = 0.5;
		  }
	    */
	    
	    // c) 
	    // 1 opak - 10% 
        // 2 opak - 20% 
        // 3 opak - 30% 
        // + od 4 opak kazda uverejnenie navyse 1% zlavy, t.j. 4 opak - 31%, 5 opak - 32%, 6 opak - 33% atd.
        discount = count / 10;
        if (count > 3) {
			discount = 0.3 + 0.01*(count-3);
		}
	    
      };
      total_price += price * (1 - discount) * count;

      discounts[titles[i][0]] = discount * 100;
      prices[titles[i][0]] = price;
    }
    total_price = Math.round(total_price);

    //6. odosli na email a zobraz
    titles_param = '';
    for (i = 0; i < titles.length; i++) {
      titles_param += titles[i][0];
      titles_param += ', ';
      titles_param += counts[titles[i][0]];
      if (i == titles.length - 1) {
		titles_param += '; ';
	  }

    }
    //$.get('http://82.119.226.143/send.php?titles='+titles_param+'&type='+type+'&titles_advertised='+titles_.join('|')+'&client='+'&total_price='+total_price);
    //vygenerovanie tabulky
    $('table#summary tbody tr').remove();
    for (i = 0; i < titles.length; i++) {
      $('table#summary tbody').append('<tr><td>' + $("#" + titles[i][0]).parent().text() + '</td><td>' + type + '</td><td>' + dimensions + '</td><td>' + format_price(prices[titles[i][0]]) + '</td><td>' + discounts[titles[i][0]] + '%</td><td>' + format_price(prices[titles[i][0]] * (1 - discounts[titles[i][0]] / 100)) + '</td><td>' + counts[titles[i][0]] + '</td><td>' + format_price(counts[titles[i][0]] * prices[titles[i][0]] * (1 - discounts[titles[i][0]] / 100)) + '</td></tr>');
    }

    $('td#total').html(format_price(total_price));
	$("#kalkulacia").slideDown('slow');

    return false;
  }




  // MILANKOVE VECI ---------

  $("#tituly_inzerovane .tituly-chosen").prepend("<strong>Vybrané tituly:")
  $("#tituly_inzerovane .chosen_titles").prepend("</strong><em> Zatiaľ ste si nevybrali žiadne tituly.</em>")
  $("#tituly_inzerovane input[@type=checkbox]").attr('checked', '');
  $("#tituly_vybrane input[@type=checkbox]").attr('checked', '');

  $('#tituly_inzerovane .tituly label').click(function () {
    selected_titles = $("#tituly_inzerovane input:checked[name='selected_titles[]']")
    if (selected_titles.length > 0) {
      selected_values = $.map(selected_titles, function (t) {
        title_code = $(t).val().substr(0, 2)
        return '<li id="old_' + title_code + '">' + t.title + '</li>'
      }).join("")
      selected_values = '<ul>' + selected_values + '</ul>'
      $("#tituly_inzerovane .chosen_titles").html(selected_values)
    } else {
      $("#tituly_inzerovane .chosen_titles").text = "<em> Zatiaľ ste si nevybrali žiadne tituly.</em>"
    }
  });


  $('#tituly_vybrane .tituly-selection input').click(function () {
    // jQuery('label').find("input")
    title_name = $(this).attr("title")
    title_code = $(this).val().substr(0, 2)
    if ($(this).attr('checked') == true) {
      if ($("#tituly_vybrane").find("input:checked").length == 1) {
        $("#tituly_vybrane .chosen_titles").prepend("<strong>Ku každému titulu uveďte počet po sebe idúcich opakovaní vášho inzerátu.</strong>")
      }
      $("#tituly_vybrane .chosen_titles").append('<label class="titul_inzerovany" id="ti_' + title_code + '">' + title_name + ' <input class="number" id="' + title_code + '" type="text" name="inzerovany_' + title_code + '" value="1" /></label>')
      $("input#" + title_code).change(function () {
        if (parseInt($(this).val()) > 48) {
			$(this).val('48');
		}
        recalculate();
      });

    } else {
      $("#tituly_vybrane .chosen_titles").find("#ti_" + title_code).attr("id", "to_be_deleted").fadeOut('slow', function () {
        $(this).remove()
      })

      if ($("#tituly_vybrane").find("input:checked").length == 0) {
        $("#tituly_vybrane .chosen_titles").text("")
      }
    }
    recalculate();

  });

  // $('#tituly_vybrane .tituly-selection input').click(function(){
  // 			inp = $('label').find("input")
  // 			title_name = $(inp).attr("title")
  // 			title_code = $(inp).val().substr(0,2)
  // 			if ($(inp).attr('checked') == true) {
  // 				if ($("#tituly_vybrane").find("input:checked").length == 1) {			
  // 						$("#tituly_vybrane .chosen_titles").prepend("<strong>Ku každému titulu veďte prosím počet želaných opakovaní vášho inzerátu:</strong>")					
  // 				}
  // 				$("#tituly_vybrane .chosen_titles").append('<label class="titul_inzerovany" id="ti_'+title_code+'">'+title_name+' <input class="number" id="'+title_code+'" type="text" name="inzerovany_'+title_code+'" value="1" /></label>')
  // 				$("input#"+title_code).change(function()
  // 				{
  // 					//alert('bu');
  // 					if (parseInt($(inp).val())>48)	$(inp).val('48');
  // 					recalculate();
  // 				});	
  // 		
  // 			} else {
  // 				$("#tituly_vybrane .chosen_titles").find("#ti_"+title_code).attr("id","to_be_deleted").fadeOut('slow', function(){ $(inp).remove() })
  // 
  // 				if ($("#tituly_vybrane").find("input:checked").length == 0) {			
  // 					$("#tituly_vybrane .chosen_titles").text("")
  // 				}
  // 			}
  // 	recalculate();
  // 
  // });
  $("#objednat").click(function () {
    $("#vyber_titulu").hide();
    $("#velkost_inzeratu").hide();
    $("#doplnujuce_otazky").hide();
    $("#kontaktne_informacie").fadeIn();
    $("#kalkulacia #objednat").hide();
    $("#kalkulacia #upravit-objednavku").fadeIn();
    $("h2").text("Cenová kalkulácia - nezáväzná objednávka");
    return false;
  });

  $("#upravit-objednavku").click(function () {
    $("#vyber_titulu").fadeIn();
    $("#velkost_inzeratu").fadeIn();
    $("#doplnujuce_otazky").fadeIn();
    $("#kontaktne_informacie").hide();
    $("#kalkulacia #upravit-objednavku").hide();
    $("#kalkulacia #objednat").show();
    $("h2").text("Cenník - kalkulácia");
    return false;
  });

  function isNumeric(value) {
    if (value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
    return true;
  }

  $("#odoslat_objednavku").click(function () {
    if (!validate_required()) {
      return false;
    } else {
      $("#finalna_kalkulacia_table").val($("div#finalna_kalkulacia").html())
      return true;
    }

  })

  function validate() {

    var failed = false;
    numbers = $("input.number")
    numbers.each(function (i, o) {
      if (!isNumeric(o.value)) {
        if (!failed) {
          alert("Počet opakovaní musí byť číselná hodnota!");
        }
        failed = true;
      }
    })


    if (!failed) {
      return true;
    } else {
      return false;
    }
  }


  // Dost primitivna validacia, neosetruje zadanie iba medzier


  function validate_required() {

    var failed = false;

    r = $("input.required")
    r.each(function (i, o) {
      if (o.value == "") {
        if (!failed) {
          alert("Nevyplnili ste všetky povinné políčka!");
        }
        failed = true;
      }
    })


    if (!failed) {
      return true;
    } else {
      return false;
    }
  }


  // END MILANKOVE VECI ----		

});
