/* Copyright (c) Piotr Sawicki */
/* Wszelkie prawa zastrzeżone. */

/* PODSTAWY */

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

/* MENU */

function getRef(id)
{
	return document.getElementById(id);
}

function getSty(id)
{
	return document.getElementById(id).style;
}

var int_menuTimer = 0;
var int_menuPrevId = 0;
var int_menuId = false;
var int_menuClass = "";
function int_menuDivHide(divId)
{
	getSty(divId).visibility ="hidden";
	if ( int_menuId ) {
		getRef(int_menuId).className = int_menuClass;
	}
	int_menuId = false;
}

function menuDropDown(divId, menuId)
{
	if ( int_menuPrevId ) int_menuDivHide(int_menuPrevId);
	if ( int_menuTimer ) clearTimeout(int_menuTimer);
	int_menuId = menuId;
	int_menuClass = getRef(menuId).className;
	getRef(menuId).className = "a";
	getSty(divId).visibility = "visible";
}

function menuPrepare(divId)
{
	int_menuPrevId	= divId;
	int_menuTimer	= setTimeout('int_menuDivHide(\'' + divId + '\')', 100);
}

function menuDivOver()
{
	if ( int_menuTimer ) clearTimeout(int_menuTimer);
}

function menuDivOut(divId)
{
	int_menuTimer = setTimeout('int_menuDivHide(\'' + divId + '\')', 100);
}

/* POPRAWNOŚĆ DANYCH */

function czyDobryEmail(email)
{
	return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(email);
}

function czyDobryNIP(nip)
{
	var result = false;
	if ( nip.match(/^[0-9]{3}-[0-9]{2}-[0-9]{2}-[0-9]{3}$/) || nip.match(/^[0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2}$/) || nip.match(/^[0-9]{10}$/) ) {
		nip = nip.replace(/-/g,'');
		var wagi = "657234567";
		var suma = 0;
		for ( pos = 0; pos < 9; pos++ )
			suma += (parseInt(wagi.charAt(pos)) * parseInt(nip.charAt(pos)));
		if ( ((suma % 11) == 10 && nip.charAt(9) == '0')
			|| ((suma % 11) == parseInt(nip.charAt(9))) ) {
			result = true;
		}
	}
	return result;
}

/* SZUKARKA */

function onsubmitQ(frm)
{
	var result = false;
	if ( frm.q.value ) result = true;
	else frm.q.focus();
	return result;
}

/* BIULETYN */

function onfocusBiuletynEmail()
{
	var biuletyn_email = document.getElementById('biuletyn_email');
	if ( biuletyn_email.value == biuletyn_email.defaultValue ) {
		biuletyn_email.value = '';
		biuletyn_email.style.color = '#000000';
	}
}

function onblurBiuletynEmail()
{
	var biuletyn_email = document.getElementById('biuletyn_email');
	if ( biuletyn_email.value == '' ) {
		biuletyn_email.value = biuletyn_email.defaultValue;
		biuletyn_email.style.color = '#999999';
	}
}

function onsubmitBiuletyn()
{
	var result = false;
	var email = document.getElementById('biuletyn_email');
	if ( email.value != 'Wpisz e-mail' ) {
		result = onsubmitEmail('biuletyn_email');
	}
	return result;
}

/* SPRAWDZANIE PÓL */

function komunikatBledu(errorMsg)
{
	window.alert(errorMsg + "\n(pola wyróżnione gwiazdką są wymagane)");
}

function onsubmitEmail(elementId)
{
	var result = true;
	var element = document.getElementById(elementId);
	if ( !czyDobryEmail(element.value) ) {
		window.alert('Podaj prawidłowy adres e-mail!');
		element.focus();
		result = false;
	}
	return result;
}

function sprawdzString(elementId, errorMsg)
{
	var result = false;
	var element = document.getElementById(elementId);
	var trimmed = element.value.trim()
	if ( trimmed.length ) {
		element.value = trimmed;
		result = true;
	} else {
		komunikatBledu(errorMsg);
	}
	if ( !result ) element.focus();
	return result;
}

function sprawdzEmail(elementId, errorMsg)
{
	var result = false;
	var element = document.getElementById(elementId);
	var trimmed = element.value.trim()
	if ( trimmed.length && czyDobryEmail(trimmed) ) {
		element.value = trimmed;
		result = true;
	} else {
		komunikatBledu(errorMsg);
	}
	if ( !result ) element.focus();
	return result;
}

function sprawdzKodPocztowy(elementId, errorMsg)
{
	var result = false;
	var element = document.getElementById(elementId);
	var trimmed = element.value.trim()
	if ( /^\d{2}-\d{3}$/.test(trimmed) ) {
		element.value = trimmed;
		result = true;
	} else {
		komunikatBledu(errorMsg);
	}
	if ( !result ) element.focus();
	return result;
}

function sprawdzNIP(elementId, errorMsg)
{
	var result = false;
	var element = document.getElementById(elementId);
	var trimmed = element.value.trim()
	if ( trimmed.length && czyDobryNIP(trimmed) ) {
		element.value = trimmed;
		result = true;
	} else {
		komunikatBledu(errorMsg);
	}
	if ( !result ) element.focus();
	return result;
}

function sprawdzHaslo(pwId, confirmId)
{
	var result = false;
	var element = document.getElementById(pwId);
	var conf = document.getElementById(confirmId);
	if ( element.value != conf.value ) {
		komunikatBledu("Hasło i potwierdzenie są różne.");
	} else {
		if ( element.value.length < 5 ) {
			komunikatBledu("Minimalna długość hasła to 5 znaków.");
		} else {
			if ( element.value != element.value.trim() ) {
				komunikatBledu("Hasło może się zaczynać lub kończyć spacją (lub innym znakiem białym).");
			} else {
				result = true;
			}
		}
	}
	if ( !result ) element.focus();
	return result;
}

function sprawdzRok(elementId, errorMsg)
{
	var result = false;
	var element = document.getElementById(elementId);
	if ( (/^\d{4}$/.test(element.value)) && element.value >= '1901' && element.value <= '2155' ) {
		result = true;
	} else {
		komunikatBledu(errorMsg);
	}
	if ( !result ) element.focus();
	return result;
}

/* KOD POCZTOWY koszyk login pay */

var sprawdzajKod = true;
function onchangeKodPocztowy(kodId, miastoId)
{
	if ( /^\d{2}-\d{3}$/.test(document.getElementById(kodId).value) ) {
		var req = mint.Request();
		req.OnSuccess = function() {
			if ( this.responseText && this.responseText != document.getElementById(miastoId).value ) {
				if ( '' == document.getElementById(miastoId).value ) {
					document.getElementById(miastoId).value = this.responseText;
				} else {
					if ( sprawdzajKod && window.confirm('Wpisane miasto: ' + document.getElementById(miastoId).value + '\nWedług bazy kodów miasto to: ' + document.getElementById(kodId).value + ' ' + this.responseText + '\nCzy poprawić miasto na ' + this.responseText + '?') ) {
						document.getElementById(miastoId).value = this.responseText;
					} else {
						sprawdzajKod = false;
					}
				}
			}
		}
		req.Send(urlROOT + 'ajax.php?a=KodPocztowy&kod=' + document.getElementById(kodId).value);
	}
}

/* LOGIN */

function onclickRejestracjaRegulamin()
{
	chkbox = document.getElementById('frmRegulaminCB');
	hdnval = document.getElementById('frmRegulamin');
	hdnval.value = chkbox.checked ? 1 : 0;
}

function sprawdzRegulamin(elementId, errorMsg)
{
	var result = false;
	var element = document.getElementById(elementId);
	if ( element.value == 1 ) {
		result = true;
	} else {
		komunikatBledu(errorMsg);
	}
	return result;
}

function onsubmitRejestracja()
{
	var result = false;
	do {
		if ( !sprawdzEmail('frmEmail', 'Wpisz PRAWIDŁOWY adres e-mail.') ) break;
		if ( !sprawdzString('frmImie', 'Wpisz swoje imię.') ) break;
		var jestNip = document.getElementById('frmNip').value.length;
		if ( jestNip && !sprawdzNIP('frmNip', 'Zostaw pole PUSTE lub wpisz NIP wg wzoru: 123-456-78-90') ) break;
		if ( !sprawdzString('frmNazwisko', 'Wpisz swoje nazwisko.') ) break;
		if ( !sprawdzString('frmUlica', 'Wpisz nazwę ulicy.') ) break;
//		if ( !sprawdzString('frmNrPosesji', 'Wpisz numer budynku/posesji.') ) break;
//		if ( !sprawdzString('frmNrLokalu', 'Wpisz nr mieszkania/lokalu.\nJeśli nie ma, wpisz kreskę: -') ) break;
		if ( !sprawdzKodPocztowy('frmKodPocztowy', 'Wpisz kod pocztowy według wzoru: 12-345') ) break;
		if ( !sprawdzString('frmMiasto', 'Wpisz nazwę miasta/miejscowości.') ) break;
		if ( !sprawdzString('frmTelefony', 'Podaj nr telefonu. Preferowana komórka.') ) break;
		if ( !sprawdzHaslo('frmHaslo', 'frmPowtorzHaslo') ) break;
		if ( !sprawdzRegulamin('frmRegulamin', 'Aby zarejestrować się, potrzebna jest akceptacja regulaminu sklepu.') ) break;
		result = true;
	} while ( false );
	return result;
}

function onsubmitProfilDane()
{
	var result = false;
	do {
		if ( !sprawdzString('frmImie', 'Wpisz swoje imię.') ) break;
		if ( !sprawdzString('frmNazwisko', 'Wpisz swoje nazwisko.') ) break;
		var jestNip = document.getElementById('frmNip').value.length;
		if ( jestNip && !sprawdzNIP('frmNip', 'Zostaw pole PUSTE lub wpisz NIP wg wzoru: 123-456-78-90') ) break;
		if ( !sprawdzString('frmUlica', 'Wpisz nazwę ulicy.') ) break;
//		if ( !sprawdzString('frmNrPosesji', 'Wpisz numer budynku/posesji.') ) break;
//		if ( !sprawdzString('frmNrLokalu', 'Wpisz nr mieszkania/lokalu.\nJeśli nie ma, wpisz kreskę: -') ) break;
		if ( !sprawdzKodPocztowy('frmKodPocztowy', 'Wpisz kod pocztowy według wzoru: 12-345') ) break;
		if ( !sprawdzString('frmMiasto', 'Wpisz nazwę miasta/miejscowości.') ) break;
		if ( !sprawdzString('frmTelefony', 'Podaj nr telefonu. Preferowana komórka.') ) break;
		result = true;
	} while ( false );
	return result;
}

function onsubmitProfilHaslo()
{
	var result = false;
	do {
		if ( !sprawdzHaslo('frmHaslo', 'frmPowtorzHaslo') ) break;
		result = true;
	} while ( false );
	return result;
}

function onsubmitForumDane()
{
	var result = false;
	do {
		if ( !sprawdzString('frmPNazwa', 'Wpisz swój pseudonim.') ) break;
		var jestRok = document.getElementById('frmPDataUr').value.length;
		if ( jestRok && !sprawdzRok('frmPDataUr', 'Wpisz rok od 1901 do 2155 lub zostaw pole puste.') ) break;
		result = true;
	} while ( false );
	return result;
}

/* KOSZYK */

function onsubmitZamAdres()
{
	var result = false;
	do {
		var jestEmail = document.getElementById('frmEmail').value.length;
		if ( jestEmail && !sprawdzEmail('frmEmail', 'Wpisz PRAWIDŁOWY adres e-mail lub zostaw pole puste.') ) break;
		if ( !sprawdzString('frmImie', 'Wpisz swoje imię.') ) break;
		if ( !sprawdzString('frmNazwisko', 'Wpisz swoje nazwisko.') ) break;
		var jestNip = document.getElementById('frmNip').value.length;
		if ( jestNip && !sprawdzNIP('frmNip', 'Zostaw pole PUSTE lub wpisz NIP wg wzoru: 123-456-78-90') ) break;
		if ( !sprawdzString('frmUlica', 'Wpisz nazwę ulicy.') ) break;
//		if ( !sprawdzString('frmNrPosesji', 'Wpisz numer budynku/posesji.') ) break;
//		if ( !sprawdzString('frmNrLokalu', 'Wpisz nr mieszkania/lokalu.\nJeśli nie ma, wpisz kreskę: -') ) break;
		if ( !sprawdzKodPocztowy('frmKodPocztowy', 'Wpisz kod pocztowy według wzoru: 12-345') ) break;
		if ( !sprawdzString('frmMiasto', 'Wpisz nazwę miasta/miejscowości.') ) break;
		if ( !sprawdzString('frmTelefony', 'Podaj nr telefonu. Preferowana komórka.') ) break;
		result = true;
	} while ( false );
	return result;
}

/* PRODUKT */

function onclickFav(rodzaj, prod_id, state)
{
	var req = mint.Request();
	req.Send(urlROOT + 'ajax.php?a=ProdFavs&rodzaj=' + rodzaj + '&prod_id=' + prod_id + '&state=' + state, 'ProdFavs');
}

/* PAY */

function onsubmitPay()
{
	return onsubmitZamAdres();
}

/* POPUPS */

function popupOpen(targetURL, cx, cy)
{
	var xOffset = (screen.availWidth - cx) / 2;
	var yOffset = (screen.availHeight - cy) / 2.3;
	popup = window.open(targetURL, 'popup'+cx+'_'+cy, 'alwaysRaised=yes,dependent,scrollbars=yes,resizable=yes,width='+cx+',height='+cy+',screenX='+xOffset+',screenY='+yOffset+',top='+yOffset+',left='+xOffset+'');
	popup.focus();
}

function onsubmitPolec(frm)
{
	if ( !frm.nazwa.value ) {
		window.alert('Wpisz swoje imię lub pseudonim.');
		frm.nazwa.focus();
		return false;
	}
	if ( !frm.email.value || !czyDobryEmail(frm.email.value) ) {
		window.alert('Wpisz poprawny adres e-mail.');
		frm.email.focus();
		return false;
	}
	var found = false;
	for ( var ii = 0; ii < 5; ii++ ) {
		var nazwa = 'nazwa' + ii;
		var email = 'email' + ii;
		if ( frm[nazwa].value || frm[email].value ) {
			found = true;
			if ( !frm[nazwa].value ) {
				window.alert('Wpisz imię lub pseudonim znajomej osoby.');
				frm[nazwa].focus();
				return false;
			}
			if ( !czyDobryEmail(frm[email].value) ) {
				window.alert('Wpisz poprawny adres e-mail.');
				frm[email].focus();
				return false;
			}
		}
	}
	if ( !found ) {
		window.alert('Wpisz imię i adres e-mail przynajmniej jednej osoby.');
		frm.nazwa0.focus();
		return false;
	}
	return true;
}

function onsubmitOpinia(frm)
{
	if ( !frm.nazwa.value ) {
		window.alert('Wpisz swoje imię lub pseudonim.');
		frm.nazwa.focus();
		return false;
	}
	if ( frm.email.value && !czyDobryEmail(frm.email.value) ) {
		window.alert('Wpisz poprawny adres e-mail.');
		frm.email.focus();
		return false;
	}
	if ( !frm.tekst.value ) {
		window.alert('Wpisz opinię.');
		frm.tekst.focus();
		return false;
	}
	return true;
}

function onsubmitPytanie(frm)
{
	if ( !frm.nazwa.value ) {
		window.alert('Wpisz swoje imię lub pseudonim.');
		frm.nazwa.focus();
		return false;
	}
	if ( !czyDobryEmail(frm.email.value) ) {
		window.alert('Wpisz poprawny adres e-mail.');
		frm.email.focus();
		return false;
	}
	if ( !frm.pytanie.value ) {
		window.alert('Wpisz treść pytania.');
		frm.pytanie.focus();
		return false;
	}
	return true;
}

