function Eshop() {

	var self = this;
	self.komponenta = 0;

	self.setKomponenta = function(id) {
		self.komponenta = id;
	};

	// BACKEND - GLOBALNI FUNKCE

	// vybere oznacene polozky v seznamu
	self.get_oznacene = function(el) {

		var adresy = document.getElementById(el);
		var check = adresy.getElementsByTagName("input");
		var ozn = new String();

		for (i = 0; i < check.length; i++) {
			if (check[i].checked == true)
				ozn += check[i].value + ";";
		}

		return ozn;
	};

	// hromadne zaskrtavatko
	self.check_all = function(el) {

		var dopravy = document.getElementById(el);
		var check = dopravy.getElementsByTagName("input");
		var check_all = document.getElementById("check_all");

		for (i = 0; i < check.length; i++) {
			if (check[i].type == "checkbox") {
				if (check_all.checked == false) {
					check[i].checked = false;
				} else {
					check[i].checked = true;
				}
			}
		}
	};

	// do inputu dovoli zapsat jen cisla
	// dec - dovoli psat i desetinnou tecku/carku?
	self.jenCisla = function(myfield, e, dec) {

		var key;
		var keychar;

		if (window.event) {
			key = window.event.keyCode;
		} else if (e) {
			key = e.which;
		} else {
			return true;
		}

		keychar = String.fromCharCode(key);

		if (keychar == ",")
			keychar = ".";
		myfield.value = (myfield.value).replace(',', '.');

		// control keys
		if ((key == null) || (key == 0) || (key == 8) || (key == 9)
				|| (key == 13) || (key == 27))
			return true;

		// numbers
		else if ((("0123456789").indexOf(keychar) > -1))
			return true;

		// decimal point jump
		else if (dec && (keychar == ".")) {
			myfield.form.elements[dec].focus();
			return false;
		} else {
			return false;
		}
	}

	var dph_global;
	var dph_uloz_global;

	self.urci_dph = function() {

		var dphRadio = $("#dph > input:checked");

		if (dphRadio.length > 0) {
			dph_uloz_global = dphRadio.val();
		} else {
			dph_uloz_global = 19;
			alert('POZOR: Není nastaveno DPH.\nPro přepočet se použije výše DPH 19%.')
		}

		dph_global = dph_uloz_global / 100;

		return dph_uloz_global;

	};

	self.spocti_dph = function(obj_id, input_id) {

		if (typeof dph_global == "undefined" || dph_global == "none")
			self.urci_dph();

		var cena = parseFloat(document.getElementById(obj_id).value);

		var vysledek = parseFloat((cena.length == 0 || dph_global == 0 ? 0
				: cena))
				+ (parseFloat((cena.length == 0 ? 0 : cena)) * parseFloat((dph_global == 0 ? 1
						: dph_global)));
		vysledek = Math.round(vysledek * 100) / 100;

		if (isNaN(vysledek))
			vysledek = '';
		else
			vysledek = vysledek.toFixed(2);

		var input = document.getElementById(input_id);
		if (input)
			input.value = vysledek;
	};

	self.spocti_z_dph = function(obj_id, input_id) {

		if (typeof dph_global == "undefined" || dph_global == "none")
			self.urci_dph();

		var cena = parseFloat(document.getElementById(obj_id).value);
		var koef = (dph_global * 100) / (100 + (dph_global * 100));
		var dph = parseFloat((cena.length == 0 || dph_global == 0 ? 0 : cena))
				* (parseFloat((dph_global == 0 ? 1 : koef)));

		var vysledek = parseFloat((cena.length == 0 || dph_global == 0 ? 0
				: cena))
				- dph;
		vysledek = Math.round(vysledek * 100) / 100;

		if (isNaN(vysledek))
			vysledek = '';
		else
			vysledek = vysledek.toFixed(2);

		if (isNaN(cena))
			cena = '';
		else
			cena = cena.toFixed(2);

		var input = document.getElementById(input_id);
		if (input)
			input.value = (vysledek == 0 ? cena : vysledek);
	};

	// pro funkcnost je nutne v tpl souboru mit title u inputu pro ceny
	// title bez DPH: cena
	// title s DPH: cenaDPH
	self.prepocti_dph = function() {

		var inputs = $("#ceny input[title=cena]");
		var inputsDPH = $("#ceny input[title=cenaDPH]");

		for ( var i = 0; i < inputs.length; i++) {

			var cislo = parseInt($(inputsDPH[i]).val());
			if (!isNaN(cislo))
				self.spocti_z_dph($(inputsDPH[i]).attr("id"), $(inputs[i])
						.attr("id"));

		}

	};

	// kontrola e-mailove adresy
	self.isValidEmailAddress = function(emailAddress) {

		var pattern = new RegExp(
				/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
		return pattern.test(emailAddress);
	}

	// END OF BACKEND

	// FRONTEND

	// oblibene v muj-ucet
	
	self.oblibene_smazat = function(id_oblibene) {
		if (confirm("Opravdu chcete produkt vymazat z oblíbených položek?"))
			
			system.ajaxRequest([ "komponenta", php.komponenta_id], "oblibene_polozky_delete", [["id_oblibene",id_oblibene]], {fce : self.oblibene});

	};

	self.oblibene = function() {
		alert('ahoj');
		system.ajaxRequest( [ "komponenta", php.komponenta_id ], "oblibene_polozky",
				[], {fce : self.vloz_oblibene});
	};

	self.vloz_oblibene = function(xmldata) {
		$("#oblibene").html(xmldata);
	};

	self.add_favorite = function(linkObj, addUrl, addTitle) {

		if (window.sidebar) { // Mozilla Firefox Bookmark
			window.sidebar.addPanel(addTitle, addUrl, "");
		} else if (window.external) { // IE Favorite
			window.external.AddFavorite(addUrl, addTitle);
		} else if (window.opera && window.print) { // Opera Hotlist
			linkObj.title = addTitle;
			linkObj.rel = 'sidebar';
			return true;
		}

	}
	
	self.prepni_element = function(el){
		
		el = $("#"+el);
		
		if(el.css('display')=="none") el.css("display", "block");
		else el.css("display", "none");
		
	};

	// END OF FRONTEND
};

var eshop = new Eshop();

