﻿ // MODUŁ: FORM VALIDATOR - funkcje sprawdzające zawartość pól formularza ***
 // na INPUCIE definiujemy onkeypress='FV_SWP(this.value,"typpola");
 // zdefiniowane typy pól: int,text,float,nrstacji, zakres (x;y)
 // by: Sebastian Baranowski 2009-08-22

// window.onload=FV_Init;
 
 function FV_IgnorujEvent()
 {
  return false;
 }
 
 function FV_Init()
 {
 FV_POLA = document.getElementsByTagName("input"); 
    for (ti=0;ti<FV_POLA.length;ti++) {
        toPole = FV_POLA[ti];	
		if (toPole.type=="text")
		{
			
			toPole.onfocus=FV_Focus;
			toPole.onblur =FV_Blur;
	        if (toPole.FV!="undefined")
			{			
				toPole.onkeypress	=FV_SWP;
				if (toPole.FV=="kod") toPole.ondrop=FV_IgnorujEvent;
			}
		}
    }


 FV_POLA = document.getElementsByTagName("textarea"); 
    for (ti=0;ti<FV_POLA.length;ti++) {
        toPole = FV_POLA[ti];	
		toPole.onfocus		=FV_Focus;
		toPole.onblur 		=FV_Blur;
		if (toPole.FV!="undefined") toPole.onkeypress	=FV_SWP;				
    }

} 
 
 
 function FV_TylkoCyfry(k) {
   if ((k<48)||(k>57)) return false;
	return true;
 }

 function FV_SprZnakDziesietny(k,w) {
   if (k==44) { k=46; event.keyCode=k; }		// zamienia przecinek na kropkę
   if ( (k==46)&&(w.indexOf('.')>0) )  k=0;	// tylko jeden znak dziesietny
   return k;
 }

 function FV_BezApostrofow(k,w) {
   if (k==34) { k=96; event.keyCode=k; }		// zamienia " na `
   if (k==39) { k=96; event.keyCode=k; }		// zamienia ' na `   
 }


 function FV_SprMinus(k,w) {
   if (k==45) {
		if (w.indexOf('-')>0) 	return false;	// tylko jeden minus
		if (w.length>0) 		return false; 	//  i to na początku
	}
   return true;
 }

 
  function FV_Focus() {	
   toPole=window.event.srcElement;
   toPole.wartosc=toPole.value;
  } 

  function FV_Blur() {	
   toPole=window.event.srcElement;
   FV_SprawdzPole(toPole);   
  } 

  
 function FV_SprawdzPole(toPole) 
 {
  //if (toPole.FV=="kod") if (toPole.value!="") toPole.value="";
  if (toPole.FV=="text")     toPole.value=FV_SafeString(toPole.value);
  
  if (toPole.FV=="int"||toPole.FV=="float")
  {
 	min  =toPole.min;  
	max  =toPole.max;  
	dlug =toPole.dlug;  
	wart =toPole.value;  
	
	if ((wart<min||wart > max||(wart.length>dlug&&dlug>0))&&wart!="") 
		{ 
			alert ("To pole nie umożliwia wpisanie wartości a takim zakresie.");
			toPole.focus();
		}
  }
     
  try { sprawdzblokade(); } catch(e) { }
 }
  

function FV_SafeString(wartosc)
{
 wartosc=wartosc.replace(/'/g,'`');
 return wartosc;
}

 // SprawdzWartoscPola - wywoływana w zdarzeniu OnKeyPress na polu tekstowym, przekazujemy this.value i typ pola
 function FV_SWP() {	
   //alert(event.keyCode);
  wart =window.event.srcElement.value;  
  typ  =window.event.srcElement.FV;  


  k = event.keyCode;						// kod klawisza
  l = wart.length;							// długośc danych w polu bez tego klawisza
  w = wart+String.fromCharCode(k);			// wartość pola po klawiszu
   
   
   event.returnValue=false;				// domyślnie źle
   
   if (typ=="int") {
		if ((!FV_TylkoCyfry(k))&&(k!=45))  return;   // tylko cyfry i ew. minus
		if (!FV_SprMinus(k,wart)) return;
   } 

   if (typ=="text") {
     k=FV_BezApostrofow(k,wart);	 
   } 


   if (typ=="float") {
     k=FV_SprZnakDziesietny(k,wart);  if (k==0) return;
	 if (!FV_SprMinus(k,wart)) return;
	 if ( (!FV_TylkoCyfry(k)) && (k!=45) && (k!=46) ) return;   			// tylko cyfry, kropka lub minus
   } 

   if (typ=="zakres") {
     k=FV_SprZnakDziesietny(k,wart);  if (k==0) return;
	 if (!FV_SprMinus(k,wart)) return;	 
	 if ( (!FV_TylkoCyfry(k)) && (k!=45) && (k!=46) && (k!=59) ) return;   			// tylko cyfry, kropka lub minus i średnik
   } 
  
   
   if (typ=="kod") {	
		if (!FV_TylkoCyfry(k) && l!=2)  return;   // tylko cyfry 
		if ( ((l==2) &&((k!=45))) || (l>=6) ) 	return; // format xx-xxx

   } 

   event.returnValue=true;
 }
