/* ---------- Google */

function googleTranslateElementInit() {
  new google.translate.TranslateElement({
    pageLanguage: 'pl',
    includedLanguages: 'en,hr,cs,et,fr,es,lt,lv,de,ru,ro,sk,sl,uk,hu,it',
    layout: google.translate.TranslateElement.InlineLayout.SIMPLE
  }, 'translator');
}

/* --------------------------- Systemowe ------------------------------ */

/**
 * Dodaje słuchacza do obiektu
 *
 * @param O
 * @param E
 * @param F
 * @param x
 * @return
 */
function dodaj_sluchacza(O, E, F, x) {
	return (x = O.addEventListener) ? x(E, F, 1) : (x = O.attachEvent) ? x('on' + E, F) : !1
}

/**
 * Inicjacja menu w dokerach
 *
 * @return
 */
inicjuj_menu = function() {
	if (!document.body.currentStyle) return;
	var wsz_podmenu = document.getElementsByName('podmenu');
	for (var i = 0; i < wsz_podmenu.length; i++) {
		var li = wsz_podmenu[i].parentNode;
		if (li && li.lastChild.style) {
			li.onmouseover = function() {
				this.lastChild.style.visibility = 'visible';
			}
			li.onmouseout = function() {
				this.lastChild.style.visibility = 'hidden';
			}
		}
	}
}

/**
 * Przekierowuje użytkownika na podany adres
 *
 * @param adres
 */
function przekieruj(adres) {
	window.location.assign(adres);
}

/**
 * Odpowiednik setcookie w PHP
 *
 * @param nazwa
 * @param wart
 * @param dni
 * @return
 */
function setcookie(nazwa, wart, dni) {
	if (dni) {
		var data = new Date();
		data.setTime(data.getTime() + (dni * 24 * 60 * 60 * 1000));
		
		var waznosc = "; expires=" + data.toGMTString();
	} else {
		var waznosc = "";
	}
	
	document.cookie = nazwa + "=" + wart + waznosc + ";";
}

/**
 * Pseudo odmiana parse_str dla php
 *
 * @param str
 * @return
 */
function parse_str(str) {
	var bl1 = '=';
	var bl2 = '&';
	
	var tabl2 = str.split(bl2);
	
	var tabl3 = new Object();
	
	for (var x = 0; x < tabl2.length; x++) {
		var tmp = tabl2[x].split(bl1);
		tabl3[unescape(tmp[0])] = escape(tmp[1]).replace(/[+]/g, ' ');
	}
	return tabl3;
}

/**
 * Pseudo odmiana http_build_query dla php
 *
 * @param formdata
 * @return
 */
function http_build_query(formdata) {
	var i = 0, key, use_val, use_key, tmp_arr = [];
	arg_separator = '&';
	
	for (var klucz in formdata) {
		var val = formdata[klucz];
		var key = klucz;
		use_val = unescape(val);
		use_key = encodeURIComponent(key);
		tmp_arr[i++] = use_key + '=' + use_val;
	}
	
	var tmp_ = tmp_arr[0].split("%2F");
	tmp_arr[0] = unescape(tmp_[tmp_.length - 1]).replace(/[+]/g, ' ');
	return tmp_arr.join(arg_separator);
}

/* --------------------------- Alerty i okna ------------------------------ */


function pokaz_info(elm, id) {

	var szer = $(id).getWidth();
	var wys = $(id).getHeight();
	var pozycja = elm.positionedOffset();
	$(id).setStyle({
		backgroundColor: '#F6A74D'
	})
	$(id).toggle();
	$(id).clonePosition(elm, {
		offsetTop: 20,
		setHeight: false,
		setWidth: false
	});
	$(id).absolutize();
}

/**
 * Otwiera okienko pomocy
 *
 * @param klucz
 * @return
 */
function pokaz_pom(klucz) {
	var klucz_pom = '';
	if (klucz.length) klucz_pom = '?klucz=' + klucz;
	
	win = new Window('win_podgl', {
		url: 'okn_pom.php' + klucz_pom,
		className: "okn",
		width: 600,
		height: 500,
		destroyOnClose: true,
		minimizable: false,
		maximizable: false,
		draggable: false,
		recenterAuto: false,
		showEffect: Element.show,
		hideEffect: Element.hide
	});
	win.showCenter(true);
	
	return false;
}

/**
 * Otwiera okienko wydruku
 *
 * @param adres
 * @return
 */
function pokaz_druk(klucz) {
	// window.open(adres, '', 'scrollbars, height=600, width=800');
	
	var klucz_pom = '';
	if (klucz.length) klucz_pom = '?klucz=' + klucz;
	
	win = new Window('win_podgl', {
		url: 'okn_druk.php' + klucz_pom,
		className: "okn",
		width: 600,
		height: 500,
		destroyOnClose: true,
		minimizable: false,
		maximizable: false,
		showEffect: Element.show,
		hideEffect: Element.hide
	});
	win.showCenter(true);
}

/**
 * Pokazuje potwierdzenie (odpowiednik confirm)
 *
 * @param tekst
 * @param ikona
 * @param funk_ok
 * @param funk_anuluj
 * @return
 */
function pokaz_potw(tekst, ikona, funk_ok, funk_anuluj) {
	if (ikona == 'nie') 
		ikona = 'no';
	else if (ikona == 'tak') 
		ikona = 'yes';
	else if (ikona == 'uwa') 
		ikona = 'warn';
	else if (ikona == 'pyt') 
		ikona = 'quest';
	else ikona = 'info';
	
	Dialog.confirm(tekst, {
		className: "raport",
		width: 350,
		okLabel: "OK",
		cancelLabel: "Anuluj",
		buttonClass: "guzik_65",
		icon: ikona,
		ok: funk_ok,
		cancel: funk_anuluj,
		showEffect: Element.show,
		hideEffect: Element.hide
	});
}

/**
 * Pokazuje raport (odpowiednik alert)
 *
 * @param tekst
 * @param ikona
 * @param czy_tekst
 * @return
 */
function pokaz_raport(tekst, ikona, czy_tekst) {

	if (czy_tekst) {
		return '<div class="srodek"><div class="raport" ><div class="naglowek">&nbsp;</div><div class="tresc"><table><tr><td style="width: 56px"><img src="pliki/ramki/zielony_' + ikona + '.png" width="48" height="48" title="Raport" /></td><td style="padding-right: 10px"><div id="tekst_dynamiczny">' + tekst + '</div></td></tr></table></div><div class="stopka">&nbsp;</div></div>  </div>';
	} else {
		if (ikona == 'nie') 
			ikona = 'no';
		else if (ikona == 'tak') 
			ikona = 'yes';
		else if (ikona == 'uwa') 
			ikona = 'warn';
		else if (ikona == 'pyt') 
			ikona = 'quest';
		else ikona = 'info';
		
		Dialog.alert(tekst, {
			className: "raport",
			width: 350,
			okLabel: "OK",
			buttonClass: "guzik_65",
			icon: ikona,
			showEffect: Element.show,
			hideEffect: Element.hide
		});
	}
}

/**
 * zaznacza checkboxow po klasie
 * @param pole
 * @param klasa
 *
 */
function zazn_wsz_pola(pole, klasa) {
	var czy_zazn = false;
	var arg = pole;
	if (klasa) var arg = pole + '.' + klasa;
	
	$$(arg).each(function(s) {
		if (s.checked == false && czy_zazn == false) czy_zazn = true;
	});
	$$(arg).each(function(s) {
		s.checked = czy_zazn;
	});
}

function zaznacz_wsz_pola_wg_wart(pole, klasa, id) {
	var arg = pole;
	var czy_zazn = false;
	
	if (klasa) var arg = pole + '.' + klasa;
	
	if (id) {
		czy_zazn = $(id).checked;
	} else {
		$$(arg).each(function(s) {
			if (s.checked == false && czy_zazn == false) czy_zazn = true;
		});
	}
	
	$$(arg).each(function(s) {
		s.checked = czy_zazn;
	});
}

/**
 * pokazuje/ukrywa wszystkie filtry
 * @param pole
 * @param klasa
 */
function pokaz_wsz_pola(pole, klasa) {
	var czy_wid = false;
	var arg = pole;
	if (klasa) var arg = pole + '.' + klasa;
	
	$$(arg).each(function(s) {
		if (s.getStyle('display') == 'none' && czy_wid == false) czy_wid = true;
	});
	$$(arg).each(function(s) {
		if (czy_wid) 
			s.show();
		else s.hide();
	});
}

function przelacz(id) {
	// celowo nie używam toggle()
	
	if ($(id).visible()) {
		$(id + '_pokaz').show();
		$(id + '_ukryj').hide();
		$(id).hide();
	} else {
		$(id + '_pokaz').hide();
		$(id + '_ukryj').show();
		$(id).show();
	}
	
}

/* --------------------------- Ajax ---------------------------------- */

/**
 * Obsługa ajaxa jedno-zadaniowego
 *
 * @param json param
 * @param kontener_id
 * @return
 */
function ajax_zadan_jedn(param, kontener_id) {
	var czy_ajax = true;
	
	if (czy_ajax) {
	
		var styl_maringLeft = $(kontener_id).getStyle('marginLeft');
		var styl_maringTop = $(kontener_id).getStyle('marginTop');
		var styl_textAlign = $(kontener_id).getStyle('textAlign');
		
		var dlug = $(kontener_id).getHeight() / 2;
		var szer = $(kontener_id).getWidth() / 2 - 16;
		
		$(kontener_id).setStyle({
			textAlign: 'left'
		});
		$(kontener_id).update('<img style="margin-left:' + szer + 'px;margin-top:' + dlug + 'px" width="32" height="32" src="pliki/ladowanie.gif"/>');
		
		new Ajax.Request('ajax.php', {
			method: 'get',
			sanitizeJSON: 'true',
			parameters: param,
			onInteractive: function() {
			},
			onSuccess: function(transport) {
				$(kontener_id).setStyle({
					'textAlign': styl_textAlign
				}).update(transport.responseText.toString()).show();
			},
			onFailure: function() {
				exit();
			}
		});
	}
}

/* --------------------------- DOM ------------------------------ */

function ust_rozdz() {
  setcookie("kli_rozdz", screen.width + "x" + screen.height, 1);
}

/* --------------------------- Formularze ------------------------------ */

function czysc_fraza(pole) {
	if (pole.value == "Szukaj artykułu...") pole.value = "";
}

/**
 * Czyści formularz
 *
 * @param form
 * @param licz
 * @return
 */
function form_czysc_tekst(form, licz) {
	for (var i = 0; i < form.length; i++) {
		if (form[i].type == 'text') form[i].value = '';
	}
}

/**
 * Ustawia domyslne wartosci formularza, parametry: tabl wartosci domyslnych, tabl nazw pol
 *
 * @param formularz
 * @param tabl_wart
 * @param tabl_nazw
 * @return
 */
function ustaw_domyslnie(formularz, tabl_wart, tabl_nazw) {

	if (formularz[tabl_nazw[0]]) {
		switch (tabl_wart[0]) {
			case "40":
				formularz[tabl_nazw[0]].selectedIndex = 0;
				break;
			case "60":
				formularz[tabl_nazw[0]].selectedIndex = 1;
				break;
			case "80":
				formularz[tabl_nazw[0]].selectedIndex = 2;
				break;
		}
	}
	
	if (formularz[tabl_nazw[1]]) {
		switch (tabl_wart[1]) {
			case "10":
				formularz[tabl_nazw[1]][0].checked = true;
				break;
			case "20":
				formularz[tabl_nazw[1]][1].checked = true;
				break;
			case "50":
				formularz[tabl_nazw[1]][2].checked = true;
				break;
			case "100":
				formularz[tabl_nazw[1]][3].checked = true;
				break;
		}
	}
	
	for (var i = 2; i < tabl_nazw.length; i++) {
		if (formularz[tabl_nazw[i]]) {
			if (tabl_wart[i] == 1) formularz[tabl_nazw[i]].checked = true;
			if (tabl_wart[i] == 0) formularz[tabl_nazw[i]].checked = false;
		}
	}
}

/**
 * Przejdz do nastepnej strony
 *
 * @param formularz
 * @param kombi
 * @return
 */
function przejdz(formularz, kombi) {
	forma = document.getElementById(formularz);
	if (forma[kombi].value > 0) {
		document.getElementById(formularz).submit();
	} else {
		pokaz_raport('Nie wybrano nic z listy.');
	}
}

/**
 * Ustawia fokus na wybrane pole
 *
 * @param pole
 * @param blad
 * @return
 */
function ust_fokus(pole, blad) {
	setTimeout("document.getElementById('" + pole + "').focus()");
	setTimeout("document.getElementById('" + pole + "').value = document.getElementById('" + pole + "').value");
	
	if (blad) {
		setTimeout("document.getElementById('" + pole + "').className = 'blad'");
	}
}

/**
 * Ustawia wartość elementu na podaną
 *
 * @param elem
 * @param wart
 * @return
 */
function ust_wart(elem, wart) {
	var pole = document.getElementById(elem);
	
	pole.value = wart;
}

/**
 * Kopiuje wartość elementu z elem1 do elem2
 *
 * @param elem
 * @param wart
 * @return
 */
function kopiuj_wart(elem_1, elem_2) {
	var pole_1 = document.getElementById(elem_1);
	var pole_2 = document.getElementById(elem_2);
	
	pole_2.value = pole_1.value;
}

function ust_klucz(elem_1, elem_2) {
	var pole_1 = document.getElementById(elem_1);
	var pole_2 = document.getElementById(elem_2);
	
	pole_2.value = '[' + pole_1.value + ']';
}

/* --------------------------- Zakupy ------------------------------ */

function spr_il_zakup(nazwa, adres) {
	var inputs = document.getElementsByTagName('input');
	var il = 0;
	
	for (i = 0; i < inputs.length; i++) {
		if (inputs[i].id.indexOf("il_zakup_") > -1) {
			var tmp = parseInt(inputs[i].value);
			if (!tmp) tmp = 0;
			
			il += tmp;
		}
	}
	
	if (il > 0) {
		pokaz_potw('W niektóre pola <b>Ilość</b> wpisano wartość, ale artykuły <b>nie zostały jeszcze</b> dodane do koszyka. Jeśli przejdziesz teraz do szczegułów artykułu <b>' + nazwa + '</b>, wpisane ilości wymażą się.<br /><br />Aby ich nie stracić, najpierw dodaj wybrane artykuły do koszyka, klikając guzik <b>Dodaj wybrane do koszyka</b> na dole strony.<br /><br />Czy chcesz przejść do szczegułów artykułu <b>' + nazwa + '</b>?', null, function() {
			window.location.assign(adres);
		}, null);
	} else {
		window.location.assign(adres);
	}
}

/**
 * Funkcje plus i minus dla zwiekszania ilosci art
 *
 * @param obj nr_kolor
 * @return
 */
function zw_il(obj) {
	var il_zakup = $('il_zakup_' + obj);
	
	if (il_zakup) {
		var il = parseInt(il_zakup.value);
		if (!il) il = 0;
		il_zakup.value = ++il;
		
		pokaz_kosz_info(obj);
	}
}

/**
 * Zmienia ilość art w koszu
 *
 * @param obj nr_kolor
 * @return
 */
function zm_il(obj) {
	var il_zakup = $('il_zakup_' + obj);
	
	if (il_zakup) {
		var il = parseInt(il_zakup.value);
		if (!il) il = 0;
		if (il > 0) il_zakup.value = --il;
		
		pokaz_kosz_info(obj);
	}
}

function do_koszyka(obj) {
	var il_zakup = $('il_zakup_' + obj);
	var jedn_zakup = $('jedn_zakup_' + obj);
	var form_zakup = $('form_zakup');
	var token = form_zakup['token'];
	
	window.location.assign(form_zakup.action + '&' + 'token=' + token.value + '&' + 'jedn_zakup=' + jedn_zakup.getValue() + '&' + 'id_kolor=' + obj + '&' + 'il_zakup=' + (il_zakup.getValue() || 1) + '&' + 'oper=dodaj');
	
}

/**
 * Ustawia ilość art w koszu na podst pola ilość
 *
 * @param tag
 * @param id_kosz_dod
 * @return
 */
function ustaw_il(obj) {
	var il_zakup = $('il_zakup_' + obj);
	if (il_zakup) {
		if ((isNaN(il_zakup.value) || il_zakup.value < 0 || il_zakup.value.search(/^\d{0,5}$/) == -1) && il_zakup.value != '') {
			pokaz_raport('Podano niepoprawną ilość. Proszę wpisać liczbę całkowitą.');
			il_zakup.value = '';
		} else {
			pokaz_kosz_info(obj);
		}
	}
}

/* --------------------------- Koszyk ------------------------------ */

/**
 * Zapisuje zmiany dokonane w koszu
 */
function zapisz_kosz(form) {
	$(form).submit();
}

/**s
 * Pokazuje info o konieczności zatwierdzenia zmian w koszu
 *
 * @return
 */
function pokaz_kosz_info(obj) {
	var info = document.getElementById('kosz_info');
	if (info) info.className = 'pokaz srodek czerwony';
	
	var usun = document.getElementById('usun_' + obj);
	if (usun) usun.className = 'ukryj';
	
	var zapisz = document.getElementById('zapisz_' + obj);
	if (zapisz) zapisz.className = 'pokaz';
}

/**
 * Potwierdza usunięcie artykułu z koszyka
 *
 * @param id_podkosz
 * @param nr_handl
 * @return
 */
function usun_art_z_kosz(id_podkosz, nr_handl, token) {
	pokaz_potw('Czy na pewno chcesz usunąć artykuł <br /><b>' + nr_handl + '</b> z koszyka?', 'pyt', function() {
		window.location.assign("zamow_koszyk.php?oper=usun&token=" + token + "&id_podkosz=" + id_podkosz);
		return true;
	}, null);
}

/**
 * To samo co wyzej tylko uniwersalne
 *
 * @param dane
 * @param tresc
 * @param motoda get/post
 * @return
 */
function usun_potw(dane, opis, metoda) {

	// stara wersja
	/*if (confirm('Czy na pewno chcesz usunąć  ' + opis + ' ?')) {
	 if (metoda == 'post')
	 $(dane).submit();
	 else window.location.assign(dane);
	 }*/
	Dialog.confirm('Czy na pewno chcesz usunąć  ' + opis + ' ?', {
		className: "raport",
		width: 350,
		okLabel: "OK",
		cancelLabel: "Anuluj",
		buttonClass: "guzik_65",
		ok: function() {
			if (metoda == 'post') 
				$(dane).submit();
			else window.location.assign(dane);
		},
		showEffect: Element.show,
		hideEffect: Element.hide
	});
}

/* --------------------------- Kasa ------------------------------ */

function wylacz_nip_walid(form) {

	if (form.kraj.getValue() != 'PL') {
		if (form.nip.hasClassName('validate-nip')) {
			form.nip.removeClassName('validate-nip');
			if ($('advice-validate-nip-nip')) {
				form.nip.removeClassName('validation-failed');
				$('advice-validate-nip-nip').hide();
			}
		}
	}
	if (form.kraj.getValue() == 'PL') {
		if (!form.nip.hasClassName('validate-nip')) {
			form.nip.addClassName('validate-nip');
		}
		if ($('advice-validate-nip-nip')) {
			$('advice-validate-nip-nip').show();
		}
	}
	
	if (form.fakt_kraj.getValue() != 'PL') {
		if (form.fakt_nip.hasClassName('validate-nip')) {
			form.fakt_nip.removeClassName('validate-nip');
			if ($('advice-validate-nip-fakt_nip')) {
				form.fakt_nip.removeClassName('validation-failed');
				$('advice-validate-nip-fakt_nip').hide();
			}
		}
	}
	
	if (form.fakt_kraj.getValue() == 'PL') {
		if (!form.fakt_nip.hasClassName('validate-nip')) {
			form.fakt_nip.addClassName('validate-nip');
		}
		if ($('advice-validate-nip-fakt_nip')) {
			$('advice-validate-nip-fakt_nip').show();
		}
	}
}

/**
 * Synchroniznacja danych w formularzu
 *
 * @param t_f
 * @return
 */
function zaznacz_czy_fakt(t_f) {

	if (t_f.czy_fakt_1.checked) {
		$('parag_fakt').setStyle({
			'display': 'block'
		});
		if (!t_f.fakt_nazwa.value) {
			if (t_f.nazwa.value) 
				t_f.fakt_nazwa.value = t_f.nazwa.value;
			else t_f.fakt_nazwa.value = t_f.osoba.value;
		}
		t_f.fakt_nazwa.disabled = false;
		if (!t_f.fakt_adres_ulica.value) t_f.fakt_adres_ulica.value = t_f.adres_ulica.value;
		t_f.fakt_adres_ulica.disabled = false;
		if (!t_f.fakt_adres_lokal.value) t_f.fakt_adres_lokal.value = t_f.adres_lokal.value;
		t_f.fakt_adres_lokal.disabled = false;
		if (!t_f.fakt_adres_numer.value) t_f.fakt_adres_numer.value = t_f.adres_numer.value;
		t_f.fakt_adres_numer.disabled = false;
		if (!t_f.fakt_miasto_kod.value) t_f.fakt_miasto_kod.value = t_f.miasto_kod.value;
		t_f.fakt_miasto_kod.disabled = false;
		if (!t_f.fakt_miasto_nazwa.value) t_f.fakt_miasto_nazwa.value = t_f.miasto_nazwa.value;
		t_f.fakt_miasto_nazwa.disabled = false;
		if (!t_f.fakt_nip.value) t_f.fakt_nip.value = t_f.nip.value;
		t_f.fakt_nip.disabled = false;
		if (!t_f.kraj.value) t_f.fakt_kraj.value = t_f.kraj.value;
		t_f.fakt_kraj.disabled = false;
	} else {
		$('parag_fakt').setStyle({
			'display': 'none'
		});
		//t_f.fakt_nazwa.value = "";
		t_f.fakt_nazwa.disabled = true;
		//t_f.fakt_adres_ulica.value = "";
		t_f.fakt_adres_ulica.disabled = true;
		//t_f.fakt_adres_lokal.value = "";
		t_f.fakt_adres_lokal.disabled = true;
		//t_f.fakt_adres_numer.value = "";
		t_f.fakt_adres_numer.disabled = true;
		//t_f.fakt_miasto_kod.value = "";
		t_f.fakt_miasto_kod.disabled = true;
		//t_f.fakt_miasto_nazwa.value = "";
		t_f.fakt_miasto_nazwa.disabled = true;
		//t_f.fakt_nip.value = "";
		t_f.fakt_nip.disabled = true;
		//t_f.fakt_kraj.value = "";
		t_f.fakt_kraj.disabled = true;
	}
}

/**
 * Aktywacja pól do wysyłki
 *
 * @param t_f
 * @return
 */
function zaznacz_czy_wys(t_f) {
	if (t_f.czy_wys_1.checked) {
		$('inny_adres').setStyle({
			'display': 'block'
		});
	} else {
		$('inny_adres').setStyle({
			'display': 'none'
		});
	}
}

/**
 * Sprzęża pole platnosci z polem wysylka
 *
 * @return
 */
function ust_jak_wysylk() {
	var jak_platn = document.getElementById('jak_platn');
	var jak_wysylk = document.getElementById('jak_wysylk');
	
	if (jak_platn.selectedIndex > 0) {
		jak_wysylk.selectedIndex = jak_platn.selectedIndex;
	}
}

/* --------------------------- Kalendarz ------------------------------ */

/**
 * Pokazuje kalendarz
 * @param String pole
 * @param Object guzik
 */
function kalendarz_pokaz(pole, guzik) {
	// div
	var kalendarz = $('kalendarz');
	if (!kalendarz) {
		var kalendarz = document.createElement('div');
		kalendarz.setAttribute('id', 'kalendarz');
		document.getElementById('tresc').appendChild(kalendarz);
	}
	
	// data
	var pole = $(pole);
	var dane = new Array;
	var dzis = new Date();
	var regexp = new RegExp("^[0-9]{4}-[0-9]{2}-[0-9]{2}$");
	if (pole && pole.value.match(regexp)) {
		dane = pole.value.split('-');
		
		var rok = parseInt(dane[0], 10);
		var mies = parseInt(dane[1], 10) - 1;
		var dzien = parseInt(dane[2], 10);
	} else {
		var rok = dzis.getFullYear();
		var mies = dzis.getMonth();
		var dzien = dzis.getDate();
	}
	
	// treść
	if (pole) {
		kalendarz_ust(new Date(rok, mies, dzien).valueOf(), pole.id);
		kalendarz.style.display = "block";
	} else {
		alert('Podano błędne pole');
	}
	
	// pozycja x & y
	var guzik_y = guzik;
	var pozycja_y = guzik_y.offsetTop + guzik_y.offsetHeight + 10;
	while ((guzik_y = guzik_y.offsetParent) != null) 
		pozycja_y += guzik_y.offsetTop;
	
	var guzik_x = guzik;
	var pozycja_x = guzik_x.offsetLeft + 10;
	while ((guzik_x = guzik_x.offsetParent) != null) 
		pozycja_x += guzik_x.offsetLeft;
	
	if (pozycja_y >= 280) {
		kalendarz.style.top = (pozycja_y - 280) + 'px';
	} else {
		kalendarz.style.top = (pozycja_y) + 'px';
	}
	
	kalendarz.style.left = (pozycja_x - 180) + 'px';
}

/**
 * Ukrywa kalendarz
 *
 * @return
 */
function kalendarz_ukryj() {
	$("kalendarz").style.display = "none";
}

/**
 * Ustawia datę kalendarza
 *
 * @param int rok
 * @param int mies
 * @param int dzien
 * @param String pole
 */
function kalendarz_ust(czas, pole) {
	var pole = $(pole);
	
	// data
	var dzis = new Date();
	var param = new Date(parseInt(czas));
	var tymcz = new Date(parseInt(czas));
	
	var daty = new Array();
	var miesiace = Array('Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień');
	var dni = Array('Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'Sb', 'Nd');
	var il_dni = Array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var tresc = '';
	
	// rok przestępny	
	il_dni[1] = (((param.getFullYear() % 100 != 0) && (param.getFullYear() % 4 == 0)) || (param.getFullYear() % 400 == 0)) ? 29 : 28;
	
	var poprz = kalendarz_poprz_mies(param);
	var nast = kalendarz_nast_mies(param);
	
	// opcje
	
	daty[0] = new Date(2000, 0, 1).valueOf(); // mies temu
	daty[1] = kalendarz_poprz_mies(dzis).valueOf(); // mies temu
	daty[2] = dzis.valueOf() - 14 * 24 * 3600 * 1000; // 2 tyg temu
	daty[3] = dzis.valueOf() - 7 * 24 * 3600 * 1000; // 1 tydz temu
	daty[4] = dzis.valueOf(); // dziś
	daty[5] = dzis.valueOf() + 7 * 24 * 3600 * 1000; // za 1 tydz
	daty[6] = dzis.valueOf() + 14 * 24 * 3600 * 1000; // za 2 tyg
	daty[7] = kalendarz_nast_mies(dzis).valueOf(); // za mies
	daty[8] = new Date(2020, 0, 1).valueOf(); // mies temu
	// treść
	
	tymcz.setDate(1);
	
	tresc += '<span style="float: right"><a href="javascript:void(0)" onclick="kalendarz_ukryj()"><img src="pliki/ikony_12/x.gif" width="12" height="12" /></a></span>';
	tresc += '<h1>' + miesiace[tymcz.getMonth()] + ' ' + tymcz.getFullYear() + '</h1>';
	
	tresc += '<table class="opcje"><tr>';
	tresc += '<td class="lewa"><a href="javascript:void(0)" onclick="kalendarz_ust(' + poprz.valueOf() + ', \'' + pole.id + '\')"><img src="pliki/ikony_12/lewo.gif" width="12" height="12" />' + miesiace[poprz.getMonth()] + '</a></td>';
	tresc += '<td class="prawa"><a href="javascript:void(0)" onclick="kalendarz_ust(' + nast.valueOf() + ', \'' + pole.id + '\')">' + miesiace[nast.getMonth()] + '<img src="pliki/ikony_12/prawo.gif" width="12" height="12" style="margin: 0; margin-left: 3px" /></a></td>';
	tresc += '</tr></table>';
	
	if (tymcz.getDay() == 0) {
		var milisek = tymcz.valueOf() - 7 * 24 * 3600 * 1000;
	} else {
		var milisek = tymcz.valueOf() - tymcz.getDay() * 24 * 3600 * 1000;
	}
	var doba = 24 * 3600 * 1000;
	
	tresc += '<table class="dane">';
	tresc += '<tr>';
	for (var j = 1; j <= 7; j++) {
		tresc += '<th>' + dni[(j - 1)] + '</th>';
	}
	tresc += '</tr>';
	
	if (tymcz.getDay() + il_dni[tymcz.getMonth()] + (tymcz.getDay() == 0 ? 7 : 0) > 35) 
		var tymcz_i = 6;
	else var tymcz_i = 5;
	for (var i = 1; i <= tymcz_i; i++) {
		if (i % 2 == 0) 
			tresc += '<tr class="tlo_1">';
		else tresc += '<tr class="tlo_2">';
		
		for (var j = 1; j <= 7; j++) {
			var k = (i - 1) * 7 + j;
			var data = new Date(milisek + k * doba);
			if (data.getYear() == dzis.getYear() && data.getMonth() == dzis.getMonth() && data.getDate() == dzis.getDate()) {
				var czy_dzis = true;
			} else {
				var czy_dzis = false;
			}
			
			if (data.getMonth() == param.getMonth() && data.getDate() == param.getDate()) {
				var czy_param = true;
			} else {
				var czy_param = false;
			}
			
			if (czy_dzis) 
				tresc += '<td class="aktyw">';
			else tresc += '<td>';
			if (czy_dzis || czy_param) tresc += '<b>';
			tresc += '<a href="javascript:void(0)" onclick="kalendarz_wstaw(' + data.valueOf() + ', \'' + pole.id + '\')"';
			if (czy_param) tresc += ' class="aktyw"';
			tresc += '>' + data.getDate() + '</a>';
			if (czy_dzis || czy_param) tresc += '</b>';
			tresc += '</td>';
		}
		tresc += '</tr>';
	}
	tresc += '</table>';
	
	tresc += '<div class="srodek">';
	tresc += '<select id="kalendarz_opcje" onchange="kalendarz_wstaw(this.value, \'' + pole.id + '\')">';
	tresc += '<option value="' + daty[0] + '">1 stycznia 2000</option>';
	tresc += '<option value="' + daty[1] + '">miesiąc temu</option>';
	tresc += '<option value="' + daty[2] + '">2 tygodnie temu</option>';
	tresc += '<option value="' + daty[3] + '">tydzień temu</option>';
	tresc += '<option value="' + daty[4] + '" selected="selected">dzisiaj</option>';
	tresc += '<option value="' + daty[5] + '">za tydzień</option>';
	tresc += '<option value="' + daty[6] + '">za 2 tygodnie</option>';
	tresc += '<option value="' + daty[7] + '">za miesiąc</option>';
	tresc += '<option value="' + daty[8] + '">1 stycznia 2020</option>';
	tresc += '<option value="">brak</option>';
	tresc += '</select> ';
	tresc += '<input type="button" class="dalej" onclick="kalendarz_wstaw($(\'kalendarz_opcje\').value, \'' + pole.id + '\')"> ';
	tresc += '</div>';
	
	// div
	$('kalendarz').innerHTML = tresc;
}

/**
 * Wstawia datę do podanego pola
 *
 * @param czas
 * @param pole
 */
function kalendarz_wstaw(czas, pole) {
	pole = $(pole);
	
	if (pole) {
		if (czas) {
			data = new Date(parseInt(czas));
			
			var rok = data.getFullYear();
			var mies = data.getMonth();
			var dzien = data.getDate();
			
			if (++mies < 10) mies = '0' + mies;
			if (dzien < 10) dzien = '0' + dzien;
			
			//alert(data);
			pole.value = rok + "-" + mies + "-" + dzien;
		} else {
		
			//alert('null');
			pole.value = '';
		}
	}
	
	$('kalendarz').style.display = "none";
}


function kalendarz_nast_mies(data) {
	var il_dni = Array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	// rok przestępny	
	il_dni[1] = (((data.getFullYear() % 100 != 0) && (data.getFullYear() % 4 == 0)) || (data.getFullYear() % 400 == 0)) ? 29 : 28;
	
	var rok = data.getFullYear();
	var mies = data.getMonth();
	var dzien = data.getDate();
	
	if (mies == 11) {
		var nast_rok = rok + 1;
		var nast_mies = 0;
	} else {
		var nast_rok = rok;
		var nast_mies = mies + 1;
	}
	
	if (il_dni[nast_mies] < dzien) {
		var nast_dzien = il_dni[nast_mies];
	} else {
		var nast_dzien = dzien;
	}
	
	return new Date(nast_rok, nast_mies, nast_dzien);
}

function kalendarz_poprz_mies(data) {
	var il_dni = Array(31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	// rok przestępny	
	il_dni[1] = (((data.getFullYear() % 100 != 0) && (data.getFullYear() % 4 == 0)) || (data.getFullYear() % 400 == 0)) ? 29 : 28;
	
	var rok = data.getFullYear();
	var mies = data.getMonth();
	var dzien = data.getDate();
	
	if (mies == 0) {
		var poprz_rok = rok - 1;
		var poprz_mies = 11;
	} else {
		var poprz_rok = rok;
		var poprz_mies = mies - 1;
	}
	
	if (il_dni[poprz_mies] < dzien) {
		var poprz_dzien = il_dni[poprz_mies];
	} else {
		var poprz_dzien = dzien;
	}
	
	return new Date(poprz_rok, poprz_mies, poprz_dzien);
}

/* --------------------------- Dymek ------------------------------ */

/**
 * Pokazuje dymek
 *
 * @param d
 * @param E
 * @param b
 * @param i
 * @param a
 * @param tags
 * @return
 */
function pokazDymek(d, E, b, i, a, tags) {
	for (i = 0; a = tags[i]; i++) {
		if (a.title) {
			with (a.t = d.createElement("div")) {
				if (a.title.indexOf("dymek_") == 0) {
					id = "dymek2";
					if (dymek = d.getElementById("dymek_" + a.title.substr(6))) 
						innerHTML = dymek.innerHTML;
					else innerHTML = a.title.replace(/\|/g, "<br />");
				} else {
					id = "dymek1";
					innerHTML = a.title.replace(/\|/g, "<br />");
				}
			}
			a.onmouseover = function(e) {
				with (this) {
					title = "";
					onmousemove(e);
				}
				b.appendChild(this.t);
			}
			a.onmouseout = function(x) {
				with (this) {
					title = t.innerHTML.replace(/<br \/>/g, "\|")
				}
				if (x = d.getElementById("dymek1")) b.removeChild(x);
				if (x = d.getElementById("dymek2")) b.removeChild(x);
			}
			a.onmousemove = function(e) {
				e = e || event;
				with (this.t.style) {
					left = e.clientX + (E.scrollLeft || b.scrollLeft) + "px"
					top = e.clientY + (E.scrollTop || b.scrollTop) + "px"
				}
			}
		}
	}
}

/**
 * Inicjuje dymek
 *
 * @param d
 * @param E
 * @param b
 * @param i
 * @param a
 * @return
 */
function utworzDymek(d, E, b, i, a) {
	d = document;
	E = d.documentElement;
	b = d.body;
	if (!E) return;
	
	var tagi = Array("a", "span", "div", "img", "input");
	
	for (i = 0; t = tagi[i]; i++) {
		pokazDymek(d, E, b, i, a, b.getElementsByTagName(t));
	}
}

