// copyright (c) Piotr Sawicki

// common

var isDOM = (document.getElementById ? true : false); 
var isIE4 = ((document.all && !isDOM) ? true : false);
var isNS4 = (document.layers ? true : false);

function getRef(id) {
	if (isDOM) return document.getElementById(id);
	else if (isIE4) return document.all[id];
	else if (isNS4) return document.layers[id];
}

function getSty(id) {
	return (isNS4 ? getRef(id) : getRef(id).style);
} 

function getImg(id) {
	return document.images[id];
}

function imgChange(imgName, imgSrc) {
	getImg(imgName).src = imgSrc;
}


// dropdown menu

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);
}


/* 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);
}

// szukarka

function onsubmitQ(frm)
{
	if ( !frm.q.value ) {
		frm.q.focus();
		return false;
	}
	return true;
}

// 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 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()
{
	// !!! todo - nip
	var result = false;
	do {
		if ( !sprawdzString('frmImie', 'Wpisz swoje imię.') ) break;
		if ( !sprawdzString('frmNazwisko', 'Wpisz swoje nazwisko.') ) break;
		if ( !sprawdzEmail('frmEmail', 'Wpisz PRAWIDŁOWY adres e-mail.') ) 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()
{
	// !!! todo - nip
	var result = false;
	do {
		if ( !sprawdzString('frmImie', 'Wpisz swoje imię.') ) 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;
		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()
{
	// !!! todo - nip
	var result = false;
	do {
		if ( !sprawdzString('frmImie', 'Wpisz swoje imię.') ) break;
		if ( !sprawdzString('frmNazwisko', 'Wpisz swoje nazwisko.') ) break;
		var jestEmail = document.getElementById('frmEmail').value.length
		if ( jestEmail && !sprawdzEmail('frmEmail', 'Wpisz PRAWIDŁOWY adres e-mail lub zostaw pole puste.') ) 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;
}


// 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 onsubmitPow(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 onsubmitKoment(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 onsubmitPyt(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;
}
