// Copyright (c) Piotr Sawicki
// Wszelkie prawa zastrzeżone.

// common

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+$/,"");
}

function komunikatBledu(errorMsg) {
	window.alert(errorMsg + "\n(pola wyróżnione gwiazdką są wymagane)");
}

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;
}

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;
}

// profil i zamówienie

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 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 onclickRejestracjaRegulamin()
{
	chkbox = document.getElementById('frmRegulaminCB');
	hdnval = document.getElementById('frmRegulamin');
	hdnval.value = chkbox.checked ? 1 : 0;
}

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;
}

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('kod_miasta.php?kod=' + document.getElementById(kodId).value);
	}
}

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;
}

function onsubmitPay()
{
	return onsubmitZamAdres();
}


// popupy

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 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 komentarz.');
		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;
}

