﻿var ogonki='ĄąĘęĆćŁłŃńŚśÓóŹźŻż';

var mailREG=/^([a-z0-9_\.-]+)@[a-z0-9_\.-]+(\.[a-z]{2,4})$/g;
var ImNazREG=/^[a-zA-ZĄąĘęĆćŁłŃńŚśÓóŹźŻż]+$/g;
var nazwiskoREG=/^[a-zA-ZĄąĘęĆćŁłŃńŚśÓóŹźŻż\s-]+$/g;
var miastoREG=/^[a-zA-ZĄąĘęĆćŁłŃńŚśÓóŹźŻż\s-]+$/g;
var tagREG=/<.*?>/g;
var telREG=/^[0-9\s\(\)\-\+]+([\.we]+)?[0-9\s\(\)\-\+]+$/g; /* +48 012 333-32-23 wew. 332 */
var kodREG=/^[0-9]{2}-[0-9]{3}$/g;
var loginREG=/^[a-zA-Z0-9_.\-@]+$/g;

var telOnKeyPressREG=/^[0-9\s\(\)\-\+we\.]+/g;
var mailOnKeyPressREG=/^[a-zA-Z0-9_\.\-_@]+$/g;


Event.observe(window,'load',function()
{
 var form=document.getElementById("wysylka");
 if(!form) return;
 var errFormMsg='Wypełnij poprawnie obowiązkowe pola formularza';


 var el=''; 
 for (var i=0,elementy=form.elements; i<elementy.length; i++)
     {
      sprawdzaj(elementy[i]);// alert(elementy[i]);
     }
//sprawdz wszystkie na submicie
 form.onsubmit=function()
	{
         var checkboxy_zaznaczone=false; //checkboxy nie sa zaznaczone
         var checkboxy_zdefiniowane=false; //checkboxy nie sa zdefiniowane
		 var radio_zaznaczone=false; //checkboxy nie sa zaznaczone
         var radio_zdefiniowane=false; //checkboxy nie sa zdefiniowane
         for(var i=0,elementy=this.elements; i<elementy.length; i++)
	    {
	     //wyjatki dla obowiazkowych checkboxow w zamawianiu katalogow
		if(elementy[i].getAttribute('type')=='checkbox') //typ
		  {
                   if(elementy[i].name.indexOf('zam')!=-1) checkboxy_zdefiniowane=true; //sprawdz czy na stronie sa zdefiniowane checkboxy
                   if(checkboxy_zdefiniowane==true && elementy[i].checked==true)
                       checkboxy_zaznaczone=true; //jesli sa zdefiniowane sprawdz czy przynajmniej jeden jest zaznaczony
		  }

        //wyjatki dla obowiazkowego radio 
		if(elementy[i].getAttribute('type')=='radio')
		 {
			if(elementy[i].name.indexOf('seminarium')!=-1) radio_zdefiniowane=true; //sprawdz czy na stronie sa zdefiniowane radio
             if(radio_zdefiniowane==true && elementy[i].checked==true)
                       radio_zaznaczone=true; //jesli sa zdefiniowane sprawdz czy przynajmniej jeden radio
		 }

	     //waliduje tylko pola tekstowe
	     if(elementy[i].getAttribute('type')=='submit' || elementy[i].getAttribute('type')=='hidden' || elementy[i].getAttribute('name')=='') continue; 
		 else waliduj_pola(elementy[i]);
		 
 		//w IE name sie gryzie z id        
			try          
			{
 				if(navigator.userAgent.indexOf('MSIE')!=-1)
				       {
     		   			 var imgSRC=IEgetElementByIdAndTag(''+elementy[i].name,'img').src;
					   }
 				else
     		  		  	var imgSRC=document.getElementById(''+elementy[i].name).src;
			}
                //jesli nie ma obrazka sam tworzy wirtualny obrazek
	     		catch(err) { 
				                       //alert(err.description);
										var imgSRC=(new Image()).src='iko_check.gif'; 
									}
	     //sprawdzaj przy submit obowiazkowe pola oznaczone gwiazdka i omijaj nieobowiązkowe
	     if(elementy[i].name!='regon' && elementy[i].name!='fax')
	       {
			   //alert(imgSRC);
                if(imgSRC!=undefined && (imgSRC.indexOf('iko_error.gif')!=-1 || imgSRC==''))
                 {
		  alert(errFormMsg);
                  return false;
	         }
	       }
	    }//for
         //sprawdz na koncu checkboxy
         if(checkboxy_zdefiniowane==true && checkboxy_zaznaczone==false) { alert('Nie zaznaczono żadnego katalogu do zamowienia'); return false; }
		 if(radio_zdefiniowane==true && radio_zaznaczone==false) { alert('Nie zaznaczono opcji seminarium'); return false; }
         else
	    return true;
	}
}); //onload







function walidujNIP(nip)
{
 nip+='';
 nip=nip.replace(/[^0-9]+/g,'');
 var sk=0;
 var wagi=new Array(6,5,7,2,3,4,5,6,7);
 for(var i=0; i<wagi.length; i++) sk+=parseInt(nip.charAt(i))*wagi[i];
 if ( (sk%11)==parseInt(nip.charAt(9)) ) return true; 
 else return false;
}


function walidujREGON(r)
 { 
  r=r.replace(/[^0-9]+/g,'');
  var rLEN=r.length;
  if(rLEN==9)  	    var wagi=new Array(8,9,2,3,4,5,6,7);
  else if(rLEN==14) var wagi=new Array(2,4,8,5,0,9,7,3,6,1,2,4,8);
  else return false;
  for(var i=0,wagiLEN=wagi.length,sumaKontrolna=0; i<wagiLEN; i++)
       sumaKontrolna+=parseInt(r.charAt(i))*wagi[i];
  var cyfraKontrolna=sumaKontrolna%11;
  if(r==(r.substring(0,wagiLEN)+((cyfraKontrolna==10)?'0':cyfraKontrolna)+''))
     return true
  else 
     return false;
 }


function zle_wypelnione(obj)
{
 wyswietl_obrazek(obj,false);
}

function dobrze_wypelnione(obj)
{
 wyswietl_obrazek(obj,true);
}

//wypelnienie - true=dobrze, false=zle
function wyswietl_obrazek(obj,wypelnienie)
{
 //w IE name sie gryzie z id
 if(navigator.userAgent.indexOf('MSIE')!=-1)
     obrazek=IEgetElementByIdAndTag(''+obj.name,'img');
 else
     obrazek=document.getElementById(''+obj.name);

 if(wypelnienie)
    obrazek.src='/files/Image/gfx/iko_check.gif';
 else
     obrazek.src='/files/Image/gfx/iko_error.gif';
 obrazek.style.display='';
}

function IEgetElementByIdAndTag(id,tag)
{
 var tagi=document.getElementsByTagName(tag);
 for(var i=0; i<tagi.length; i++)
     if(tagi[i].getAttribute('id')==id) return tagi[i];
}


//sprawdz jak wycina tagi
//alert('<a href="aaa">aaa</a> pozostalosc'.replace(tagREG,'').replace(/^\s+/,'').replace(/\s+$/,''));

/* ver 1
function pierwszaDuzaLitera(str)
{
 return str.substring(0,1).toUpperCase()+''+str.substring(1).toLowerCase();
}
*/
//funkcja powieksza pierwsze litery kolejnych wyrazow np.
//alicja redlich-modlińska   iwona śledzińska-katarasińska itp.
//ver 2
function pierwszaDuzaLitera(str)
{
 var pierwszaLitera=/( |-)([a-zA-ZĄąĘęĆćŁłŃńŚśÓóŹźŻż])/g;
 return str.substring(0,1).toUpperCase()+str.substring(1).replace(pierwszaLitera,function($0,$1,$2){return $1+$2.substring(0,1).toUpperCase()+$2.substring(1).toLowerCase();});
}

function bezpieczne_haslo(str)
{
 if(str.length<6)
   {
    alert("Hasło powinno mieć długość minimalnie 6 znaków dla bezpieczeństwa");
    return false;
   }
 return true;
}

//alert(pierwszaDuzaLitera('ómiech'));
//document.getElementById('imie').wyrReg=/^[A-Za-z]+$/; //przypisz regExp
//document.getElementById('imie').onkeypress=filtruj_wyrReg; //fitruj regExp


/* filtruj RegExp na elemencie DOM */
function filtruj_wyrReg(e)
{
 var l='',keynum=0;
 if(window.event) // IE
    keynum = window.event.keyCode;
 else if(e.which) 			// Netscape/Firefox/Opera
    keynum = e.which;
 l=String.fromCharCode(keynum);
				//zezwalaj na event gdy jest tylko RegExp, backspace lub strzalki
 if(l.match(this.wyrReg) || keynum==8 || keynum==0) return true;
 				//blokuj event
 else return false;
}


function sprawdzaj(el)
{
 //filtruj na onchange
 el.onchange=function()
           {
	    //czysc ze spacji i tagow TYLKO POLA TEXT I PASSWORD
	    if(this.getAttribute('type')=='text' || this.getAttribute('type')=='password')
	          this.value=this.value.replace(tagREG,'').replace(/^\s+/,'').replace(/\s+$/,'');
	    waliduj_pola(this);
           }
  //przypisz wyrażenia regularne do obiektów

 //filtruj na onkeypress (właściwość el.wyrReg)
  switch(el.name)
  {
   case "email"    : el.wyrReg=mailOnKeyPressREG;  	 el.onkeypress=filtruj_wyrReg; break;
   case "imie"     : el.wyrReg=ImNazREG; 	 el.onkeypress=filtruj_wyrReg; break;
   case "nazwisko" : el.wyrReg=nazwiskoREG; 	 el.onkeypress=filtruj_wyrReg; break;
   case "kod" 	   : el.wyrReg=/^[0-9\-]+$/g;     el.onkeypress=filtruj_wyrReg; break;
   case "miasto"   : el.wyrReg=miastoREG; 	 el.onkeypress=filtruj_wyrReg; break;
   case "tel"      : el.wyrReg=telOnKeyPressREG;   	 el.onkeypress=filtruj_wyrReg; break;
   case "fax"      : el.wyrReg=telOnKeyPressREG;   	 el.onkeypress=filtruj_wyrReg; break;
   case "regon"    : el.wyrReg=/^[0-9\-\s]+$/g;  el.onkeypress=filtruj_wyrReg; break;
   /*
   case "nip"      : el.wyrReg=/^[0-9\-\s]+$/g;  el.onkeypress=filtruj_wyrReg; break;
   */
   case "login"    : el.wyrReg=loginREG; 	 el.onkeypress=filtruj_wyrReg; break;
   default : break;
  }
		             
}


var rej_pass;
function waliduj_pola(obj)
{
	    //waliduj pola
	   if(obj.name=='' || obj.name==undefined) return false;
	    switch(obj.name)
		  {
	           case "email" :     ((obj.value=obj.value.toLowerCase()).match(mailREG))  ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
	           case "imie" :     (obj.value.match(ImNazREG)) ? dobrze_wypelnione(obj) : zle_wypelnione(obj);
				     //powiekszaj pierwsza litere Imie i zmniejszaj pozostale
				     obj.value=pierwszaDuzaLitera(obj.value); break;
	           case "nazwisko" : (obj.value.match(nazwiskoREG)) ? dobrze_wypelnione(obj) : zle_wypelnione(obj);
				     //powiekszaj pierwsza litere Nazwiska i zmniejszaj pozostale
				     obj.value=pierwszaDuzaLitera(obj.value); break;
		   case "firma"    : (obj.value.length>2)   ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
		   case "profil"    : (obj.value.length>2)   ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
		   case "adres"    : (obj.value.length>2)   ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
		   case "ulica_dom"    : (obj.value.length>2)   ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
		   case "kod"    :     (obj.value.match(kodREG)) ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
	           case "miasto" :     (obj.value.match(miastoREG)) ? dobrze_wypelnione(obj) : zle_wypelnione(obj);
				     //powiekszaj pierwsza litere Nazwiska i zmniejszaj pozostale
				     obj.value=pierwszaDuzaLitera(obj.value); break;
	           case "tel" :  (obj.value.match(telREG))  ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
	           case "fax" :  (obj.value.match(telREG))  ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
	          /* case "nip" :  (walidujNIP(obj.value))  ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
			  */
			   case "nip" : dobrze_wypelnione(obj); break;
			   
	           case "regon" :  (walidujREGON(obj.value))  ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
		   //selecty
		   case "wojewodztwo" :  (obj.selectedIndex!=0)  ? dobrze_wypelnione(obj) : zle_wypelnione(obj);    break;
		   case "profil" :  (obj.selectedIndex!=0)  ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
		   //radio
		   case "seminarium" : (obj.checked) ? dobrze_wypelnione(obj) : zle_wypelnione(obj);
		   //loginy i hasla
		   case "rej_login" :  (obj.value.match(loginREG)) ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
                   case "rej_pass" :  (bezpieczne_haslo(obj.value)) ? dobrze_wypelnione(obj) : zle_wypelnione(obj);
				      rej_pass=obj.value; break;
		   case "rej_pass2" :  (obj.value+''==rej_pass) ? dobrze_wypelnione(obj) : zle_wypelnione(obj); break;
		   default : break;
		  }
                 
}


