function emailCheck (emailStr) {

var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	alert("Adres email jest niepoprawny!")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid
if (user.match(userPat)==null) {
    // user is not valid
    alert("Nazwa użytkownika jest nieprawidłowa!")
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Adres IP jest niepoprawny!!")
		return false
	    }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("Nazwa domeny jest niepoprawna")
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 ||
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
   alert("Adres musi się kończyć 3-literową nazwą domeny lub 2-literowym skrótem kraju!")
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="W adresie brak doemny!"
   alert(errStr)
   return false
}
// If we've gotten this far, everything's valid!
return true;
}

// Sprawdzanie formularza podstawowego
function spr5() {
	var pusty = false;
	if (document.dane5.nazwisko.value == '') pusty = true;
	if (document.dane5.pytanie.value == '') pusty = true;
	if (document.dane5.email.value == '') pusty = true;

	// jezeli pola sa niewypelnione
	if (pusty) {
		alert ("Wszystkie pogrubione pola muszą być wypełnione");
		return false;
	} else {
		//sprawdza czy adres emeil jest porpawny
		if (emailCheck(document.dane5.email.value)) {
			return true;
		 } else  {
		 	return false;
		 }
	};
};


// Sprawdzanie 1 formularza
function spr() {
	var pusty = false;
	if (document.dane.marka.value == '') pusty = true;
	if (document.dane.poj_silnika.value == '') pusty = true;
	if (document.dane.rok_produkcji.value == '') pusty = true;
	if (document.dane.wl_urodzenia.value == '') pusty = true;
	if (document.dane.wl_prawojazdy.value == '') pusty = true;
	if (document.dane.email.value == '') pusty = true;

	// jezeli pola sa niewypelnione
	if (pusty) {
		alert ("Wszystkie pogrubione pola muszą być wypełnione");
		return false;
	} else {
		//sprawdza czy adres emeil jest porpawny
		if (emailCheck(document.dane.email.value)) {
			return true;
		 } else  {
		 	return false;
		 }
	};
};

// Sprawdzanie 2 formularza

function spr2() {
	var pusty = false;
	if (document.dane2.dom_wartosc.value == '') pusty = true;
	if (document.dane2.nieruchom_wartosc.value == '') pusty = true;
	if (document.dane2.suma_gwar.value == '') pusty = true;
	if (document.dane2.email.value == '') pusty = true;

	// jezeli pola sa niewypelnione
	if (pusty) {
		alert ("Wszystkie pogrubione pola muszą być wypełnione");
		return false;
	} else {
		//sprawdza czy adres emeil jest porpawny
		if (emailCheck(document.dane2.email.value)) {
			return true;
		 } else  {
		 	return false;
		 }
	};
};

// Sprawdzanie 3 formularza

function spr3() {
	var pusty = false;
	if (document.dane3.nazwisko == '') pusty = true;
	if (document.dane3.pytanie == '') pusty = true;
	if (document.dane3.email.value == '') pusty = true;

	// jezeli pola sa niewypelnione
	if (pusty) {
		alert ("Wszystkie pogrubione pola muszą być wypełnione");
		return false;
	} else {
		//sprawdza czy adres emeil jest porpawny
		if (emailCheck(document.dane3.email.value)) {
			return true;
		 } else  {
		 	return false;
		 }
	};
};


// -------------------------------------------------------------
// ukrywa pola w opisie produktu

 function pokaz_ukryj_div(nazwa) {
   var div = document.getElementById(nazwa);

   if (div.style.display == 'none') {
     div.style.display = '';
   }
   else {
     div.style.display = 'none';
   }
 }

// sprawdza czy wszystkie neizbedne pola sa wypelnione
// przy wysylkaniau zapytania na stronie opisu
function sprawdz_opis_zapytanie() {
	var pusty = false;
	if (document.pytanie.email.value == '') pusty = true;
	if (document.pytanie.tresc.value == '') pusty = true;

	if (pusty) {
		alert ("Wypełnij oba pola aby zadać pytanie!");
		return false;
	} else {
		if (emailCheck(document.pytanie.email.value)) {
			return true;
		} else {
			return false;
		};
	};
};

function wysylka () {
	document.dane.innyadres.disabled = false
}

function odbior_osobisty () {
	document.dane.innyadres.disabled = true
	document.dane.innyadres.checked = false;
	dostarcz_na_inny_adres(true);
}

// w razie potrzeby wlacza pola, aby bylo mozna do nich wpisac inny adres wysylki
function dostarcz_na_inny_adres(typ) {
	document.dane.nazwa_w.disabled = typ;
	document.dane.ulica_w.disabled = typ;
	document.dane.kod_w.disabled = typ;
	document.dane.miejscowosc_w.disabled = typ;
}

function sprawdz_formularz_przed_szukaniem() {
	if (document.szukaj.fraza.value == '') {
		alert("Wpisz nazwę towaru do wyszukania!")
		return false;
	} else {
		return true;
	};
}

// sprawdza czy wszystkie niezbedne pola przed dopisanie produktu uzytkownika do bazy sa wypelnione
function sprawdz_forumlarz_produktu() {
	var pusty = false;

	if (document.produkt.nazwaproduktu.value == '') pusty = true;
	if (document.produkt.cena.value == '') pusty = true;
	if (document.produkt.gwarancja.value == '') pusty = true;

	if (pusty) {
		alert ("Wszystkie pogrubione pola muszą być wypełnione");
		return false;
	} else {
		// jezeli wpisana wartosc jest liczba
		if (document.produkt.cena.value.match(/^-?\d+(\.\d+)?$/)) {
			return true;
		} else {
			alert("Pole cena musi zawierać cyfrę!")
			return false;
		};
	};
};

// sprawdza czy wszystkie niezbedne z danymi zamawiajacego
// pola przed zapisaniem zamowienia sa wypelnione
function sprawdz_formularz() {
	var pusty = false;
	var wysylka_pusty = false;
	if (document.dane.nazwisko.value == '') pusty = true;
	if (document.dane.pytanie.value == '') pusty = true;
	if (document.dane.email.value == '') pusty = true;

	// jezeli pola sa niewypelnione
	if (pusty) {
		alert ("Wszystkie pogrubione pola muszą być wypełnione");
		return false;
	} else {
		//sprawdza czy adres emeil jest porpawny
		if (emailCheck(document.dane.email.value)) {
			return true;
		 } else  {
		 	return false;
		 }
	};
};

function sprawdz_formularz1() {
	var pusty = false;
	var wysylka_pusty = false;
	if (document.dane1.marka.value == '') pusty = true;
	if (document.dane1.rok_produkcji.value == '') pusty = true;
	if (document.dane1.email.value == '') pusty = true;

	// jezeli pola sa niewypelnione
	if (pusty) {
		alert ("Wszystkie pogrubione pola muszą być wypełnione");
		return false;
	} else {
		//sprawdza czy adres emeil jest porpawny
		if (emailCheck(document.dane.email.value)) {
			return true;
		 } else  {
		 	return false;
		 }
	};
};

// Akceptacja regulaminu sklepu podczas zamowienia
function toogle(akceptuje) {
	if (akceptuje.checked) {
		document.dane.Submit.disabled = false;
	} else {
		document.dane.Submit.disabled = true;
	};
}
//

function koszyk_wydruk() {
	 window.open("wydruk.php");
};

function drukuj() {
	if (typeof(window.print) != 'undefined') {
    	window.print();
	}
};

function button_go(adres,zamknij) {
	window.location.href=adres;
	if (zamknij) {
		close();
	}
}

// uzywane przy pokazywaniu wszystkich zdjec produktu i porownywaniu, wydrukach
// otwiera nowe okno na srodku ekranu
// pierwszy parametr to ades okna, drugi to nazwa okna
// mozemy uzywac ich naprzemiennie
// noweokno('http://www.onet.pl', 'okienkoonet')
// noweokno('', 'wyniksubmit')

function noweokno(adres, nazwa) {
  	var ekran_x = screen.width;
	var ekran_y = screen.height;

	var x = ekran_x - 100;
  	var y = ekran_y - 150;

	var wspolrzedna_x = (ekran_x - x)/2;
	var wspolrzedna_y = ((ekran_y - y)/2);
	var win = window.open(adres,nazwa,'toolbar=0,scrollbars=1,location=0,directories=0,status=0,menubar=0,screenX=' + wspolrzedna_x + ',Left=' + wspolrzedna_x + ',screenY=' + wspolrzedna_y + ',Top=' + wspolrzedna_y + ',width=' + x + ',height=' + y);
	win.focus();
}

// porownuje zaznaczone artykuly
function porownaj(nazwa_form, nazwa_checkoxa) {
	var ilosc = 0;
	for (var counter=0; counter < nazwa_form.length; counter++) {
	   if ((nazwa_form.elements[counter].name == nazwa_checkoxa) && (nazwa_form.elements[counter].checked == true)) {
	      ilosc ++;
	   }
	}
	if ( ilosc < 2) {
		alert ("Musisz znaznaczyć przynajmniej 2 produkty!");
	} else {
	   noweokno('','porownaj');
	   nazwa_form.submit();
	};
}


// otwiera nowe okno z do ktrego jest kierowna stron generowana
// po submit o ile jeden z checkboxow jest zaznaczony
function cennik_wydruk(nazwa_form, nazwa_checkoxa) {
var checkFound = false;
for (var counter=0; counter < nazwa_form.length; counter++) {
   if ((nazwa_form.elements[counter].name == nazwa_checkoxa) && (nazwa_form.elements[counter].checked == true)) {
      checkFound = true;
      }
   }
if (checkFound != true) {
   alert ("Nie zaznaczono żadnej kategorii towarów!");
   } else {
   	   noweokno('','wydruk');
   	   nazwa_form.action="cennik.php?cennik=wydruk";
   	   nazwa_form.submit();
   };
}


// o ile jest wcisniety przynajmniej jeden checkbox
// przechodzi do strony
function cennik_pobierz(nazwa_form, nazwa_checkoxa) {
var checkFound = false;
for (var counter=0; counter < nazwa_form.length; counter++) {
   if ((nazwa_form.elements[counter].name == nazwa_checkoxa) && (nazwa_form.elements[counter].checked == true)) {
      checkFound = true;
      }
   }
if (checkFound != true) {
   alert ("Nie zaznaczono żadnej kategorii towarów!");
   } else {
   	   nazwa_form.action="cennik.php?cennik=pobierz";
   	   nazwa_form.submit();
   };
}

function SetAllCheckBoxes(FormName, FieldName, CheckValue)
{
	if(!document.forms[FormName])
		return;
	var objCheckBoxes = document.forms[FormName].elements[FieldName];
	if(!objCheckBoxes)
		return;
	var countCheckBoxes = objCheckBoxes.length;
	if(!countCheckBoxes)
		objCheckBoxes.checked = CheckValue;
	else
		// set the check value for all check boxes
		for(var i = 0; i < countCheckBoxes; i++)

		if (!objCheckBoxes[i].disabled) {
			objCheckBoxes[i].checked = CheckValue;
		};
}

// zaznacza i odznacza checboxy w jednym divie
function SetAllCheckBoxesInDIV (theid){
	var inputs = document.getElementById(theid).getElementsByTagName('input');
	for (var i=0; i<inputs.length ; i++) {
		var obj = inputs[i];
		if(inputs[i].type == "checkbox") {
			if (inputs[i].checked) {
                if (!inputs[i].disabled) inputs[i].checked=false;
            } else {
				if (!inputs[i].disabled) inputs[i].checked=true;
            };
        };
    }
}

// pozwala na wykonanie jakiegos skryptu js, dopiero po calkowitym zaladowaniu strony
// nie dzial z FF :-(
addDOMLoadEvent = (function(){
    // create event function stack
    var load_events = [],
        load_timer,
        script,
        done,
        exec,
        old_onload,
        init = function () {
            done = true;

            // kill the timer
            clearInterval(load_timer);

            // execute each function in the stack in the order they were added
            while (exec = load_events.shift())
                exec();

            if (script) script.onreadystatechange = '';
        };

    return function (func) {
        // if the init function was already ran, just run this function now and stop
        if (done) return func();

        if (!load_events[0]) {
            // for Mozilla/Opera9
            if (document.addEventListener)
                document.addEventListener("DOMContentLoaded", init, false);

            // for Internet Explorer
            /*@cc_on @*/
            /*@if (@_win32)
                document.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");
                script = document.getElementById("__ie_onload");
                script.onreadystatechange = function() {
                    if (this.readyState == "complete")
                        init(); // call the onload handler
                };
            /*@end @*/

            // for Safari
            if (/WebKit/i.test(navigator.userAgent)) { // sniff
                load_timer = setInterval(function() {
                    if (/loaded|complete/.test(document.readyState))
                        init(); // call the onload handler
                }, 10);
            }

            // for other browsers set the window.onload, but also execute the old window.onload
            old_onload = window.onload;
            window.onload = function() {
                init();
                if (old_onload) old_onload();
            };
        }

        load_events.push(func);
    }
})();
