//zwraca nacisniety klawisz
//dziala pod IE i N
function getkey(e){
 if (window.event)
    return window.event.keyCode;
 else if (e)
    return e.which;
 else
    return null;
}



function int_valid(e){
 var key, keychar;
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

 // pobierz znak
 keychar = String.fromCharCode(key);
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /^\d$/;
 //dopasowanie do wzorca inta
 if(int_expr.test(keychar))
  return true;

 // klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;

 // nic nie podpasowalo wiec zwroc false
 return false;
}



function kod_valid(e,obj){
 var key, keychar;
 var temp_kod;
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

// klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
 
 // pobierz znak
 keychar = String.fromCharCode(key);
 
 temp_kod=obj.value+keychar;
 
 if (temp_kod.length==7) return false;
 
 //kod_expr = /[\d][\d]?[-]?[\d]?[\d]?[\d]?[\d]?/;
 
 //if(kod_expr.test(temp_kod))
 	//alert('ok');
 
 //proba dodania 2. znaku
 if(obj.value.length==2){  
  obj.value=obj.value+'-';
 }
 
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /[\d]/;//
 //dopasowanie do wzorca inta
 if(int_expr.test(keychar))
  return true;


 // nic nie podpasowalo wiec zwroc false
 return false;
}

function int_comma_valid(e){
 var key, keychar;
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

 // pobierz znak
 keychar = String.fromCharCode(key);
 
 // wzorzec inta
 int_expr1 = /^\d$/; 
 int_expr2 = /^\.$/; 
 //dopasowanie do wzorca inta
 if(int_expr1.test(keychar)||int_expr2.test(keychar))
  return true;

 // klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;

 // nic nie podpasowalo wiec zwroc false
 return false;
}

function data_valid(e,obj){
 var key, keychar;
 var temp_data;
 
 //wzorce
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /[\d]/;//
 
 
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

// klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
 
 // pobierz znak
 keychar = String.fromCharCode(key);
 
 //if((obj.selected==true)&&((int_expr.test(keychar))||(keychar=='-'))) return true;
 
 temp_data=obj.value+keychar;
 
 
 //dlugosc maxymalna 10
 if (temp_data.length==11) return false;
 
 //na pierwszej pozycji 0-3
 if (temp_data.length==1){
 	if (!((temp_data>=0)&&(temp_data<=3))) return false;
 } 
 
 //dzien pomiedzy 01-31
 if(temp_data.length==2){
 	if (!((temp_data>0)&&(temp_data<=31))) return false;
 }
 
 

 // proba dodania 3. znaku
 // znak musi być 0-1 dla dni od 1 do 28 i 30,31
 // znak musi być 0 dla dnia 29
 if(obj.value.length==2){
  if(keychar=='-') return true;
  if((keychar==0)||(keychar==1)){
   	obj.value=obj.value+'-';
   	return true;
  }else{
  		return false;
  }
 }
 
 

 // proba dodania 4. znaku
 if(obj.value.length==3){
  if((keychar==0)||(keychar==1)){
   return true;
  }else{
   return false;
  }
 }

 
 //proba dodania 5 znaku
 if(obj.value.length==4){
  var _day = obj.value.substr(0,2);
  var _m_head = obj.value.charAt(3);
  
  //alert(_day+' '+_m_head);
  //alert(_m_head);
  //alert(_day);
  if(!int_expr.test(keychar)){
   return false;
  }else{
   
   if((_m_head==0)&&(keychar==0)&&(keychar=0)) return false;
   
   
   

   if(((_day==30)||(_day==31)) && (_m_head==0)&&(keychar==2)) return false;
   //if(((_day==30)&&(_m_head==0)) && ((keychar!=4)&&(keychar!=6)&&(keychar!=9))) return false;
   if( ((_day==30)&&(_m_head==1)) && (keychar!=0) && (keychar!=1) && (keychar!=2)) return false;
   if( ((_day==31)&&(_m_head==0)) && ((keychar!=1)&&(keychar!=3)&&(keychar!=5)&&(keychar!=7)&&(keychar!=8))) return false;
   if( ((_day==31)&&(_m_head==1)) && (keychar==1) ) return false;
   if( ((_day==31)&&(_m_head==1)) && ((keychar!=0)&&(keychar!=2)&&(keychar!=1))) return false;
   if (((_day>=1)&&(_day<=30))&&(_m_head==1) && ((keychar!=0)&&(keychar!=1)&&(keychar!=2))) return false;

   
  // if((_day>=1)&&(_day<=29)&&(_m_head==0)&&(keychar>=1)&&(keychar<=9)){ 
  //  return true;
  // }else{
  //  if((_day>=1)&&(_day<=29)&&(_m_head==1)&&((keychar==0)||(keychar==1)||(keychar==2))){ 
  //   return true;
  //  }else{
  //   return false;
  //  }
  // }
    
   

   
  }
  	
  return true;	
 }
 
 //proba dodania 6. znaku
 if(obj.value.length==5){
  if(keychar=='-') return true;  
  obj.value=obj.value+'-';
 }
 
 _29_02_expr = /^[2]?[9]?[-]?[0]?[2]?[-]?[0-9]{3}$/;
 
 if(obj.value.length==9){
 // if(_29_02_expr.test(obj.value)) alert('29');
  var _head = obj.value.substr(6,8);
  var _year = _head+keychar;
  if((_29_02_expr.test(obj.value))){
   if( (_year%4==0) && ((_year%100!=0)||(_year%400==0)) ){
    return true;
   }else{
    return false;
   }
  }else{
   return true;
  }
 }
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /[\d]/;//
 //dopasowanie do wzorca inta
 if(int_expr.test(keychar))
  return true;


 // nic nie podpasowalo wiec zwroc false
 return false;
}


function year_valid(e,obj){
 var key, keychar;
 var temp_data;
 
 //wzorce
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /^[\d]$/;//
 
 
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

// klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
 
 // pobierz znak
 keychar = String.fromCharCode(key);
 
 if(obj.value.length==4) return false;
 if(!int_expr.test(keychar)) return false;
 
 return true;
}


function vin_valid(e,obj){
 var key, keychar;
 var temp_data;
 
 //wzorce
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 vin_expr = /^[a-zA-Z0-9]$/;//
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

// klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
 
 // pobierz znak
 keychar = String.fromCharCode(key);
 
 if(obj.value.length==17) return false;
 if(!vin_expr.test(keychar)) return false;
 
 return true;
}

function nip1_valid(e,obj){
 var key, keychar;
 var temp_data;
 
 //wzorce
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /^[\d]$/;//
 
 
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

// klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
 
 // pobierz znak
 keychar = String.fromCharCode(key);
 
 if(obj.value.length==13) return false;
 
 if(!int_expr.test(keychar)&&keychar!='-') return false;
 
 if(obj.value.length==3){
  if(keychar=='-') return true;
  obj.value = obj.value+'-';
  return true;
 }
 
 if(obj.value.length==7){
  if(keychar=='-') return true;
  obj.value = obj.value+'-';
  return true;
 }
 
 if(obj.value.length==10){
  if(keychar=='-') return true;
  obj.value = obj.value+'-';
  return true;
 }
 
 if(obj.value.length==13){
	var suma;
	
	suma  = 6*obj.value.charAt(0);
	suma += 5*obj.value.charAt(1);
	suma += 7*obj.value.charAt(2);
  	suma += 2*obj.value.charAt(4);
	suma += 3*obj.value.charAt(5);
	suma += 4*obj.value.charAt(6);
	suma += 5*obj.value.charAt(8);
	suma += 6*obj.value.charAt(9);
	suma += 7*obj.value.charAt(11);
	
	if(keychar!=(suma%11)) return false;
	
	return true;
 }
 
 return true;
}

function nip_valid(e,obj){
 var key, keychar;
 var temp_data;
 
 //wzorce
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /^[\d]$/;//
 
 
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

// klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
 
 // pobierz znak
 keychar = String.fromCharCode(key);
 
 if(obj.value.length==10) return false;
 
 if(!int_expr.test(keychar)) return false;
 
 
 
 if(obj.value.length==9){
	var suma;
	
	suma  = 6*obj.value.charAt(0);
	suma += 5*obj.value.charAt(1);
	suma += 7*obj.value.charAt(2);
  	suma += 2*obj.value.charAt(3);
	suma += 3*obj.value.charAt(4);
	suma += 4*obj.value.charAt(5);
	suma += 5*obj.value.charAt(6);
	suma += 6*obj.value.charAt(7);
	suma += 7*obj.value.charAt(8);
	
	if(keychar!=(suma%11)) return false;
	
	return true;
 }
 
 return true;
}


function pesel_valid(e,obj){
 var key, keychar;
 var temp_data;
 
 //wzorce
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /^[\d]$/;//
 
 
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

// klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
 
 // pobierz znak
 keychar = String.fromCharCode(key);
 
 if(obj.value.length==11) return false;
 
 if(!int_expr.test(keychar)) return false;
 
 
 
 if(obj.value.length==10){
	var suma;
	
	suma  = 1*obj.value.charAt(0);
	suma += 3*obj.value.charAt(1);
	suma += 7*obj.value.charAt(2);
  	suma += 9*obj.value.charAt(3);
	suma += 1*obj.value.charAt(4);
	suma += 3*obj.value.charAt(5);
	suma += 7*obj.value.charAt(6);
	suma += 9*obj.value.charAt(7);
	suma += 1*obj.value.charAt(8);
	suma += 3*obj.value.charAt(9);
	
	if(keychar!=(10-(suma%10))) return false;
	
	return true;
 }
 
 return true;
}

function regon_valid(e,obj){
 var key, keychar;
 var temp_data;
 
 //wzorce
 
 // wzorzec inta
 //int_expr = /[0-9]/;
 int_expr = /^[\d]$/;//
 
 
 
 //pobranie znaku
 key = getkey(e);
 if (key == null) return true;

// klawiesze kontrolne i funkcyjne
 if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;
 
 // pobierz znak
 keychar = String.fromCharCode(key);
 
 if(obj.value.length==9) return false;
 
 if(!int_expr.test(keychar)) return false;
 
 
 
 if(obj.value.length==8){
	var suma;
	
	suma  = 8*obj.value.charAt(0);
	suma += 9*obj.value.charAt(1);
	suma += 2*obj.value.charAt(2);
  	suma += 3*obj.value.charAt(3);
	suma += 4*obj.value.charAt(4);
	suma += 5*obj.value.charAt(5);
	suma += 6*obj.value.charAt(6);
	suma += 7*obj.value.charAt(7);

	
	if(keychar!=(suma%11)) return false;
	
	return true;
 }
 
 return true;
}


function formatNumber(obj){
     		var nbr=new String(obj.value);
      	var spaceExpr = new RegExp(" ","g");
      	nbr = nbr.replace(spaceExpr,'');
      	//alert(nbr);
      	//formatuj dopiero od trzeciego znaku
      	
      	 var tmpStr = new String('');
      	 var knum = 0;
      	 for(var inum=(nbr.length-1);inum>=0;inum--){
      	  //alert(nbr.charAt(inum));
      	  knum++;
      	  tmpStr = nbr.charAt(inum)+tmpStr;
      	   if(inum!=0 && knum==3){
      	   tmpStr = ' '+tmpStr;
      	   knum = 0;
				}
      	  //alert(tmpStr);
      	 }
      	 
      	 obj.value=tmpStr;
      	
      	
		}
		
		
 /*******************************************************
  * nextjump - przenosi kursor miedzy dwoma inputami
  * srcID - id inputa z którego przenosimy kursor
  * targetID - id inputa do którego przenosimy kursor
  * maxlength - maksymalna dlugosc pierwszego inputa,
  * po osiagnieciu ktorej nastepuje przeskok
  *******************************************************/		

 function nextjump(srcID,targetID,maxlength,e){
 	key = getkey(e);
 	if( key!=8 ){
 	 var srcField = document.getElementById(srcID);
	 var targetField = document.getElementById(targetID);
	 if(srcField.value.length==maxlength) targetField.focus();
	}else{
	 var srcField = document.getElementById(targetID);	
	 var targetField = document.getElementById(srcID);
	 if(srcField.value.length==0) targetField.focus();
	}
 }		

 /***********************************************************
  * date3_valid - sprawdza poprawnosc wprowadzanych danych
  * w dacie rozlozonej na 3 pola (dd,mm,rrrr)
  * 
  * e - zdarzenie
  * d - id pola zawierajacego dzien
  * m - id pola zawierajacego miesiac
  * y - id pola zawierajacego rok
  * obj - obiekt który się odwoluje (pole dzien, miesiac lub rok)
  * 
  ************************************************************/		

 function date3_valid(e,d,m,y,obj){

	//pobranie znaku
 	key = getkey(e);
 	keychar = String.fromCharCode(key);

 	var day = document.getElementById(d).value;
 	var month = document.getElementById(m).value;
 	var year = document.getElementById(y).value;

 	//wzorce
 	int_expr = /[\d]/;
 	int_1_9_expr = /[1-9]/;
 
 	
 	if (key == null){
	 return true;
	}
	
	if (key==8){
		switch(obj.name){
			case m:
				if (month=='') document.getElementById(d).focus();
				return true;
			break;
			case y:
				if (year=='') document.getElementById(m).focus();
				return true;
			break;
			default:
			return true;
		}
	}
	
	// jeżeli  klawiesze kontrolne i funkcyjne to OK
 	if ( key==null || key==0 || key==9 || key==13 || key==27 ){
	 return true;
	}

   
   switch(obj.name){
   	case d:
   		//pierwsza cyfra dnia musi być z przedzialu 0-3
   		if (obj.value.length==0 && (keychar=='0' || keychar=='1' || keychar=='2' || keychar=='3')){
			 return true;
			}
			
	      //jeżeli pierwsza cyfra dnia jest trojka to nastepna liczba musi być z przedzialu 0-1
	      if (obj.value.length==1 && obj.value=='3' && (keychar=='0' || keychar=='1')){
			 return true;
			}
	      //jeżeli pierwsza cyfra dnia jest 1 lub 2 to nastepna liczba musi być z przedzialu 0-9
	      if (obj.value.length==1 && (obj.value=='1' || obj.value=='2') && int_expr.test(keychar)){
			 return true;
			}
	      //jeżeli pierwsza cyfra dnia jest 0 to nastepna musi być z przedzialu 1-9
	      if (obj.value.length==1 && obj.value=='0' && int_1_9_expr.test(keychar)){
			 return true;
			}

	   break;
	   case m:
	   	

	   	// pierwsza cyfra miesiaca musi być z przedzialu 0-1
	   	if (obj.value.length==0 && (keychar=='0' || keychar=='1')){
			 return true;
			}

	   	// jeżeli dzien 30 i pierwsza cyfra miesiaca jest zerem to kolejna cyfa={4,6,9}
	      if (obj.value=='0' && day=='30' && (keychar=='4' || keychar=='6' || keychar=='9')){
			 return true;
			}

	      // jeżeli dzien 30 i pierwsza cyfra miesiaca jest jedynka to kolejna cyfra może być tylko jedynka
	      if (obj.value=='1' && day=='30' && keychar=='1'){
			 return true;
			}

	      //jeżeli dzien 31 i pierwsza cyfra miesiaca jest zerem to kolejna cyfra={1,3,5,7,8}
	      if (obj.value=='0' && day=='31' && (keychar=='1' || keychar=='3' || keychar=='5' || keychar=='7' || keychar=='8')){
			 return true;
			}

	      //jeżeli dzien 31 i pierwsza cyfra miesiaca jest jedynką to kolejna cyfra={0,2}
	      if (obj.value=='1' && day=='31' && (keychar=='0' || keychar=='2')){
			 return true;
			}

			// jeżeli dzien jest mniejszy od 30 i cyfra miesiecy jest zerem to kolejna cyfra musi być z przedzialu 1-9
			if (obj.value=='0' && day<30 && int_1_9_expr.test(keychar)){
			 return true;
			}

			if (obj.value=='1' && day<30 && (keychar=='0' || keychar=='1' || keychar=='2')){
			 return true;
			}
	   break;
	   case y:
	   	
	   	var fullyear = obj.value+keychar;
	   	
	   	// jeżeli dotychczas pole rok ma mniej niż 3 znaki to kolejna cyfra musi być 0-9
	   	if(obj.value.length<3 && int_expr.test(keychar)){
	   	 return true;
	   	}
	   	
	   	// jeżeli podany jest 29 luty to rok musi być przestepny
	   	if (obj.value.length==3 && day=='29' && month=='02' && int_expr.test(keychar) && (fullyear%4==0) && ( fullyear%100!=0 || fullyear%400==0)){
			 return true;
			}
			
			// rok musi być z przedzialu 0001-9999
			if (obj.value.length==3 && obj.value=='000' && (day!='29' || month!='02') && int_1_9_expr.test(keychar)){
			 return true;
			}
			
			// rok musi być z przedzialu 0001-9999
			if (obj.value.length==3 && obj.value!='000' && (day!='29' || month!='02') && int_expr.test(keychar)){
			 return true;
			}
			 	
	   break;
   }

   return false;
 }
 
 /***********************************************************
  * joinDate - laczy wszystkie pola daty w jednym polu hidden
  * d - id pola zawierajacego dzien
  * m - id pola zawierajacego miesiac
  * y - id pola zawierajacego rok
  * fd - id pola hidden w którym ma być przechowywana cala wartosc daty
  * 
  ************************************************************/		 

 function joinDate(d,m,y,fd){
  var day 	= document.getElementById(d).value; 	
  var month = document.getElementById(m).value;
  var year 	= document.getElementById(y).value;	
  
  document.getElementById(fd).value = day+'-'+month+'-'+year;
 } 

 /***********************************************************
  * joinKod - laczy wszystkie pola daty w jednym polu hidden
  * h - id pola zawierajacego poczatek kodu poczt
  * t - id pola zawierajacego konic poczt
  * fd - id pola hidden w którym ma być przechowywana cala wartosc kody poczt
  * 
  ************************************************************/		 

 function joinKod(h,t,fk){
  
  var head 	= document.getElementById(h).value;
  var tail = document.getElementById(t).value;
  
  document.getElementById(fk).value = head+'-'+tail;
 }