//cs2.js
//www.kulttuuriymparisto.fi -sovellusten yleinen selainkoodi, Netscape-versio
//copyrigh Antti Veltheim 2002-2004

//globaali muutosbitti  (dirty bit) - kertoo, että lomakkeen tietoja on muutettu
var blnDirty=false;

//globaalit valikkotaulukot
var valinnat = new Array();
valinnat[0] = new Array();
valinnat[1] = new Array();
valinnat[2] = new Array();
valinnat[3] = new Array();

function asetaMuutettu(){
  blnDirty=true;
  }
function vapautaMuutettu(){
  blnDirty=false;
  }
function eiMuutettu(){
  if(blnDirty){
     alert("Lomakkeella on tallentamattomia tietoja.\nTallenna tiedot tai poista muutokset\nTyhjennä/Palauta -painikkeella.");
	 return false;
     }
  else{
    return true;
    }  
  }

//yleiset trimmausfunktiot (vasen ja oikea)
function trimL(strTxt){
  try{
    var a = strTxt.split("");
    var i;
    for(i=0;i<a.length;i++){
      if(a[i]!=" "){break;}
      }
    return strTxt.substring(i);
    }
  catch(e){
    return e.description;
    }
  }
function trimR(strTxt){
  try{
    var a = strTxt.split("");
    var i;
    var j = a.length;
    for(i=a.length-1;i>-1;i--){
      if(a[i]!=" "){
        break;
        }
      else{
        j--;
        }
      }
    return strTxt.substr(0, j);
    }
  catch(e){
    return e.description;
    }
  }
function checkOne(oCtrl){
//tarkastaa yhdestä kontrollista (normaalitapaus) koostuvan kentän pakollisuuden
  var bOK = false;
  switch(oCtrl.type){
//JÄRJETÖN, poistettu 29.12.2002
//    case "radio":
//    if(oCtrl.checked){
//      bOK = true;
//      }
//    break;
//JÄRJETÖN, poistettu 29.12.2002
//    case "checkbox":
//    if(oCtrl.checked){
//      bOK = true;
//      }
//    break;
    case "text":
    if(trimR(trimL(oCtrl.value))!=""){
      bOK = true;
      }
    break;
//palvelinkoodi ei tue tiedostojen käsittelyä, tämä myöhempää tarvetta varten
    case "file":
    if(trimR(trimL(oCtrl.value))!=""){
      bOK = true;
      }
    break;
    case "textarea":
    if(trimR(trimL(oCtrl.value))!=""){
      bOK = true;
      }
    break;
    }
  return bOK;
  }
function checkMany(oCtrl){
//tarkastaa useasta kontrollista koostuvan kentän pakollisuuden - pakollisuus tulkitaan siten, että ainakin yksi kontrolleista on valittava / täytettävä
  var j;
  var bOK = false;
//LISÄYS SELECT, jossa ei saa lähettää määrittelemätöntä (tyhjää arvoa)
//select tässä haarassa, koska sillä on aina length-ominaisuus
//jos samalla nimellä useampi SELECT-valikko, koodia palauttaa aina false
  if(oCtrl.tagName=="SELECT"){
    if(oCtrl.options[oCtrl.selectedIndex].value!=""){
      return true;
      }
    else{
      return false;
      }
    }
  for(j=0;j<oCtrl.length;j++){
     switch(oCtrl[j].type){
//AINOA kontrollityyppi, jota voi mielekkäästi käyttää palvelinkoodin kanssa - 
//tässäkin tapauksessa käyttöliittymällä voidaan yleensä välttää pakollisuustarkistus
       case "radio":
       if(oCtrl[j].checked){
         bOK = true;
         }
       break;
//palvelinkoodi ei tue, varattu muita tarpeita varten
       case "checkbox":
       if(oCtrl[j].checked){
         bOK = true;
         }
       break;
//palvelinkoodi ei tue, varattu muita tarpeita varten
       case "text":
       if(trimR(trimL(oCtrl[j].value))!=""){
         bOK = true;
         }
       break;
//palvelinkoodi ei tue, varattu muita tarpeita varten
       case "textarea":
       if(trimR(trimL(oCtrl[j].value))!=""){
         bOK = true;
         }
       break;
       }
     } 
  return bOK;
  }
//tarkastaa lomakkeessa '_pakollinen' -nimisten piilokenttien määrittelemät kentät seuraavasti:
//
function tarkastaPakolliset(oForm){
  var i, oCtrl;
  var bOK = true;
  var btmp;
  var errmsg;
  try{
    if(oForm._pakollinen.length){
       for(i=0;i<oForm._pakollinen.length;i++){
          oCtrl = oForm[oForm._pakollinen[i].value];
          try{
            if(oCtrl.length){
              btmp = checkMany(oCtrl);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._pakollinen[i].title;
                //errmsg = getErrorMessage(oForm, oForm._pakollinen[i].value, "_pakollinen_virhe_");
                alert(errmsg);
                }
              }
            else{
              btmp = checkOne(oCtrl);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._pakollinen[i].title;
                //errmsg = getErrorMessage(oForm, oForm._pakollinen[i].value, "_pakollinen_virhe_");
                alert(errmsg);
                }
              }
            }
          catch(e){alert(e.description)}
          }
       return bOK;
       }
    else{
          oCtrl = oForm[oForm._pakollinen.value]
          try{
            if(oCtrl.length){
              btmp = checkMany(oCtrl);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._pakollinen.title;
                //errmsg = getErrorMessage(oForm, oForm._pakollinen.value, "_pakollinen_virhe_");
                alert(errmsg);
                }
              }
            else{
              btmp = checkOne(oCtrl);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._pakollinen.title;
                //errmsg = getErrorMessage(oForm, oForm._pakollinen.value, "_pakollinen_virhe_");
                alert(errmsg);
                }
              }
            }
          catch(e){alert(e.description)}

       }
    return bOK;
    }
  catch(e){
//jos virhe, ei pakollisia
//  alert(e.description);
    return true;
    }
  }

function isIntegerOrEmpty(strValue){
//tarkastaa, onko annettu arvo kokonaisluku
try{
  var trimmed = trimR(trimL(strValue));
  if(trimmed==""){
    return true;
    }
  else{
    var test = parseInt(trimmed);
	if(isNaN(test)){
	  return false;
	  }
	else{
	  if((test+"")!=trimmed){
	    return false;
	    }
	  else{
	    return true;
	    }
	  }
    }	
	}//try
catch(e){alert(e.description);}
  }
  //
  function tarkastaKokonaisluvut(oForm){
//tarkistaa kokonaislukukenttien oikean muodon, huomauttaa myös jos kokonaislukukenttään yritetään syöttää desimaalilukua
  var i, oCtrl;
  var bOK = true;
  var btmp;
  var errmsg;
  try{
    if(oForm._kokonaisluku.length){
       for(i=0;i<oForm._kokonaisluku.length;i++){
          oCtrl = oForm[oForm._kokonaisluku[i].value];
          try{
            if(oCtrl.length){
			  errmsg = oForm._kokonaisluku[i].title + "\n\n-kentälle on virheellisesti määritelty kokonaislukutarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
			  bOK = false;
              alert(errmsg);
//			  break; //katkaisee for-loopin?
              } //if2
            else{
              btmp = isIntegerOrEmpty(oCtrl.value);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._kokonaisluku[i].title;
                alert(errmsg);
//				break; //katkaisee for-loopin?
                } //if3
              } //else2
            } //try2
          catch(e){alert(e.description)}
          } //for1
       return bOK;
       } //if1
    else{
          oCtrl = oForm[oForm._kokonaisluku.value];
          try{
            if(oCtrl.length){
	
 			  errmsg = oForm._kokonaisluku.title + "\n\n-kentälle on virheellisesti määritelty kokonaislukutarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
			  bOK = false;
              alert(errmsg);
//			  break; //katkaisee for-loopin?
              } //if4
            else{
              btmp = isIntegerOrEmpty(oCtrl.value);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._kokonaisluku.title;
                alert(errmsg);
//				break; //katkaisee for-loopin?
                } //if5
	  
              }//else4
            }//try2a
          catch(e){alert(e.description)}
       } //else1
    return bOK;
    } //try1
//jos virhe, ei pakollisia
//  alert(e.description);
  catch(e){return true;}
  }
function isDecimalOrEmpty(strValue){
//tarkastaa, onko annettu arvo desimaaliluku
try{
  var trimmed = trimR(trimL(strValue));
  if(trimmed==""){
    return true;
    }
  else{
    //hyväksytään pilkkuerotellut desimaaliluvut
    var re = /,/i;
    var replaced = trimmed.replace(re, ".");
//    var test = parseFloat(trimmed);
    var test = parseFloat(replaced);
	if(isNaN(test)){
	  return false;
	  }
	else{
//	  if((test+"")!=trimmed){
	  if((test+"")!=replaced){
	    return false;
	    }
	  else{
	    return true;
	    }
	  }
    }	
	}//try
catch(e){alert(e.description);}
  }
  //
  function tarkastaDesimaaliluvut(oForm){
//tarkistaa desimaalilukukenttien oikean muodon
  var i, oCtrl;
  var bOK = true;
  var btmp;
  var errmsg;
  try{
    if(oForm._desimaaliluku.length){
       for(i=0;i<oForm._desimaaliluku.length;i++){
          oCtrl = oForm[oForm._desimaaliluku[i].value];
          try{
            if(oCtrl.length){
			  errmsg = oForm._desimaaliluku[i].title + "\n\n-kentälle on virheellisesti määritelty desimaalilukutarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
			  bOK = false;
              alert(errmsg);
//			  break; //katkaisee for-loopin?
              } //if2
            else{
              btmp = isDecimalOrEmpty(oCtrl.value);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._desimaaliluku[i].title;
                alert(errmsg);
//				break; //katkaisee for-loopin?
                } //if3
              } //else2
            } //try2
          catch(e){alert(e.description)}
          } //for1
       return bOK;
       } //if1
    else{
          oCtrl = oForm[oForm._desimaaliluku.value];
          try{
            if(oCtrl.length){
	
 			  errmsg = oForm._desimaaliluku.title + "\n\n-kentälle on virheellisesti määritelty desimaalilukutarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
			  bOK = false;
              alert(errmsg);
//			  break; //katkaisee for-loopin?
              } //if4
            else{
              btmp = isDecimalOrEmpty(oCtrl.value);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._desimaaliluku.title;
                alert(errmsg);
//				break; //katkaisee for-loopin?
                } //if5
	  
              }//else4
            }//try2a
          catch(e){alert(e.description)}
       } //else1
    return bOK;
    } //try1
//jos virhe, ei desimaalilukukenttiä
//  alert(e.description);
  catch(e){return true;}
  }
//
  function tarkastaVakiomitat(oForm){
//tarkistaa vakiomittaiset (esim. muinaisjäännösrekisterin koordinaatit) kentät
//piilokentälle annetaan attribuutit
//      name     _vakiomitta 
//      value    tarkistettavan kentän nimi
//      mitta     vaadittu syötteen pituus, tulee olla lukumuotoinen
//      title    virheilmoitus
  var i, oCtrl;
  var bOK = true;
  var btmp;
  var iLen;
  var strVal; //trimmattu arvo
  var errmsg;
  try{
    if(oForm._vakiomitta.length){
       for(i=0;i<oForm._vakiomitta.length;i++){
          oCtrl = oForm[oForm._vakiomitta[i].value];
          try{
            if(oCtrl.length){
			  errmsg = oForm._vakiomitta[i].title + "\n\n-kentälle on virheellisesti määritelty vakiomittatarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
			  bOK = false;
              alert(errmsg);
//			  break; //katkaisee for-loopin?
              } //if2
            else{
              iLen = parseInt(oForm._vakiomitta[i].mitta);   
              if(isNaN(iLen)){
        	  errmsg = oForm._vakiomitta[i].title + "\n\n-kentälle on virheellisesti määritelty vakiomittatarkastus.\nVakiomitta puuttuu tai se ei ole kokonaisluku.";
		  bOK = false;
                  alert(errmsg);
                }
                strVal = trimL(trimR(oCtrl.value));
                oCtrl.value = strVal;
//                if(oCtrl.value.length==0){
                if(strVal.length==0){
  		  btmp = true;
		  }
		else{	
//                  btmp = (oCtrl.value.length==iLen);
                  btmp = (strVal.length==iLen);
  		  }
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._vakiomitta[i].title;
                alert(errmsg);
                return false;
                } //if3
              } //else2
            } //try2
          catch(e){alert(e.description)}
          } //for1
       return bOK;
       } //if1
    else{
          oCtrl = oForm[oForm._vakiomitta.value];
          try{
            if(oCtrl.length){
  	      errmsg = oForm._vakiomitta.title + "\n\n-kentälle on virheellisesti määritelty vakiomittatarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
	      bOK = false;
              alert(errmsg);
              return bOK;
//			  break; //katkaisee for-loopin?
              } //if4
            else{
              iLen = parseInt(oForm._vakiomitta.mitta);   
              if(isNaN(iLen)){
       	        errmsg = oForm._vakiomitta.title + "\n\n-kentälle on virheellisesti määritelty vakiomittatarkastus.\nVakiomitta puuttuu tai se ei ole kokonaisluku.";
  	        bOK = false;
                alert(errmsg);
                return bOK;
                }
                strVal = trimL(trimR(oCtrl.value));
                oCtrl.value = strVal;
//                if(oCtrl.value.length==0){
                if(strVal.length==0){
  		  btmp = true;
		  }
		else{	
//                  btmp = (oCtrl.value.length==iLen);
                  btmp = (strVal.length==iLen);
  	          }
                if(!(btmp)){
                  errmsg = oForm._vakiomitta.title;
                  alert(errmsg);
                  return false;
                  } //if5
              }//else4
            }//try2a
          catch(e){alert(e.description)}
       } //else1
    return bOK;
    } //try1
//jos virhe, ei vakiomittaisia
//  alert(e.description);
  catch(e){return true;}
  }

  function tarkastaMaksimimitat(oForm){
//tarkistaa maksimimittaiset (esim. muinaisjäännösrekisterin kuvaukset) kentät
//piilokentälle annetaan attribuutit
//      name     _maksimimitta 
//      value    tarkistettavan kentän nimi
//      mitta     vaadittu syötteen pituus, tulee olla lukumuotoinen
//      title    virheilmoitus, jossa merkkijono _pituus_ korvataan kentän pituudella
  var i, oCtrl;
  var bOK = true;
  var btmp;
  var iLen;
  var strLen;
  var strVal; //trimmattu arvo
  var errmsg;
  var re = /_pituus_/i;     //virheilmoituksesta tunnistettava _pituus_ 
  try{
    if(oForm._maksimimitta.length){
       for(i=0;i<oForm._maksimimitta.length;i++){
          oCtrl = oForm[oForm._maksimimitta[i].value];
          try{
            if(oCtrl.length){
  	 	errmsg = oForm._maksimimitta[i].title + "\n\n-kentälle on virheellisesti määritelty maksimimittatarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
		bOK = false;
                alert(errmsg);
                return false;
              } //if2
//taaksepäin yhteensopiva muutos  - jos vain IE:lle tehdyistä ylläpitosovelluksista luovutaan, tämä
//muutetaan s.e. mitta-attribuutti ei käytössä
            else{
              if(oForm._maksimimitta[i].mitta){
                iLen = parseInt(oForm._maksimimitta[i].mitta);
                }
              else{
                iLen = parseInt(oForm._maksimimitta[i].id);
                }
//              iLen = parseInt(oForm._maksimimitta[i].mitta);
//      alert(oForm._maksimimitta[i].mitta);
//      alert(oForm._maksimimitta[i].id);
//      alert(iLen);
              if(isNaN(iLen)){
        	  errmsg = oForm._maksimimitta[i].title + "\n\n-kentälle on virheellisesti määritelty maksimimittatarkastus.\nMaksimimitta puuttuu tai se ei ole kokonaisluku.";
		  bOK = false;
                  alert(errmsg);
                  return false;
                }
              strVal = trimL(trimR(oCtrl.value));
              oCtrl.value = strVal;
              btmp = (strVal.length<=iLen);
              bOK = (bOK && btmp);
              if(!(btmp)){
                strLen = "" + strVal.length;
                errmsg = oForm._maksimimitta[i].title.replace(re, strLen);
                alert(errmsg);
                return false;
                } //if3
              } //else2
            } //try2
          catch(e){alert(e.description);alert("try2");}
          } //for1
       return bOK;
       } //if1
    else{
          oCtrl = oForm[oForm._maksimimitta.value];
          try{
            if(oCtrl.length){
  	      errmsg = oForm._maksimimitta.title + "\n\n-kentälle on virheellisesti määritelty maksimimittatarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
	      bOK = false;
              alert(errmsg);
              return bOK;
//			  break; //katkaisee for-loopin?
              } //if4
            else{
//taaksepäin yhteensopiva muutos  - jos vain IE:lle tehdyistä ylläpitosovelluksista luovutaan, tämä
//muutetaan s.e. mitta-attribuutti ei käytössä
              if(oForm._maksimimitta.mitta){
                iLen = parseInt(oForm._maksimimitta.mitta);
                }
              else{
                iLen = parseInt(oForm._maksimimitta.id);
                }
//      alert(oForm._maksimimitta.mitta);
//      alert(oForm._maksimimitta.id);
              if(isNaN(iLen)){
       	        errmsg = oForm._maksimimitta.title + "\n\n-kentälle on virheellisesti määritelty maksimimittatarkastus.\nMaksimimitta puuttuu tai se ei ole kokonaisluku.";
  	        bOK = false;
                alert(errmsg);
                return bOK;
                }
              strVal = trimL(trimR(oCtrl.value));
              oCtrl.value = strVal;
              btmp = (strVal.length<=iLen);
              bOK = (bOK && btmp);
              if(!(btmp)){
                strLen = "" + strVal.length;
                errmsg = oForm._maksimimitta.title.replace(re, strLen);
                alert(errmsg);
                return false;
                } //if
              }//else4
            }//try2a
          catch(e){alert(e.description);}
       } //else1
    return bOK;
    } //try1
//jos virhe, ei maksimimittaisia
//  alert(e.description);
  catch(e){return true;}
  }

  function tarkastaPaivamaarat(oForm){
//tarkistaa päivämääräkenttien oikean muodon (saksalaisformaatti d.m.yyyy)
//HUOM! 3.7.2003
//isDateOrEmpty-funktion vuositarkastus muutettu SQL Serverin smalldatetime-rajoista 1900-2078
//datetime-rajoihin 1753 - 9999, joten funktio ei tarkasta smalldatetime-kenttiin meneviä päivämääriä oikein
//piilokentälle annetaan attribuutit
//      name     _pvm 
//      value    tarkistettavan kentän nimi
//      title    virheilmoitus
  var i, oCtrl;
  var bOK = true;
  var btmp;
  var errmsg;
  try{
    if(oForm._pvm.length){
       for(i=0;i<oForm._pvm.length;i++){
          oCtrl = oForm[oForm._pvm[i].value];
          try{
            if(oCtrl.length){
			  errmsg = oForm._pvm[i].title + "\n\n-kentälle on virheellisesti määritelty päivämäärätarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
			  bOK = false;
              alert(errmsg);
//			  break; //katkaisee for-loopin?
              } //if2
            else{
              btmp = isDateOrEmpty(oCtrl.value);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._pvm[i].title;
                alert(errmsg);
//				break; //katkaisee for-loopin?
                } //if3
              } //else2
            } //try2
          catch(e){alert(e.description)}
          } //for1
       return bOK;
       } //if1
    else{
          oCtrl = oForm[oForm._pvm.value];
          try{
            if(oCtrl.length){
	
 			  errmsg = oForm._pvm.title + "\n\n-kentälle on virheellisesti määritelty päivämäärätarkastus.\nKenttä esiintyy lomakkeessa useammin kuin kerran.";
			  bOK = false;
              alert(errmsg);
//			  break; //katkaisee for-loopin?
              } //if4
            else{
              btmp = isDateOrEmpty(oCtrl.value);
              bOK = (bOK && btmp);
              if(!(btmp)){
                errmsg = oForm._pvm.title;
                alert(errmsg);
//				break; //katkaisee for-loopin?
                } //if5
	  
              }//else4
            }//try2a
          catch(e){alert(e.description)}
       } //else1
    return bOK;
    } //try1
//jos virhe, ei päivämääräkenttiä
//  alert(e.description);
  catch(e){return true;}
  }
//

function isDateOrEmpty(strValue){
//tarkastaa, onko annettu arvo päivämäärä
//HUOM! 3.7.2003
//isDateOrEmpty-funktion vuositarkastus muutettu SQL Serverin smalldatetime-rajoista 1900-2078
//datetime-rajoihin 1753 - 9999, joten funktio ei tarkasta smalldatetime-kenttiin meneviä päivämääriä oikein
try{
  var trimmed = trimR(trimL(strValue));
  if(trimmed==""){
    return true;
    }
  else{
    var ar = strValue.split(".");
    var errmsg;
    if(ar.length==3){
      var iPv = parseInt(ar[0], 10);
      var iKk = parseInt(ar[1], 10);
      var iV = parseInt(ar[2], 10);
      if((!(isNaN(iPv))) && (!(isNaN(iKk))) && (!(isNaN(iV))) && (iPv==ar[0]) && (iKk==ar[1]) && (iV==ar[2])){
        var dPvm = new Date(iV, (iKk-1), iPv);
        if((dPvm.getDate()==iPv)&&(dPvm.getMonth()==(iKk-1))&&(dPvm.getFullYear()==iV)&&(iV>1752)&&(iV<10000)){
          errmsg = "Päivämäärä " + strValue + " on OK";
//          alert(errmsg);
          return true;
         }
        else{
//virheellinen päivämäärä (ei oikea)
          errmsg = "Päivämäärä " + strValue + " on virheellinen";
//          alert(errmsg);
          return false;
          }
        }//!(isNaN(iPv)))
      else{
//ei-numeromuotoinen päivämäärä
        errmsg = "Päivämäärä " + strValue + " on virheellinen";
//        alert(errmsg);
        return false;
        }
      } //if(ar.length==3)
    else{
//      alert("Päivämäärä on annettava muodossa d.m.yyyy\n (esim.12.5.2001)");
      return false;
      }//if(ar.length!=3)
    }//(trimmed==!")
  }//try
catch(e){alert(e.description);}
  }

//funktio, jonka avulla tieto checkbox-tyyppisen lomakekentän tilasta siirretään piilokenttään
function valintaruutu(objValintakentta, objPiilokentta){
  if(objValintakentta.checked){
    objPiilokentta.value="K";
    }
  else{
    objPiilokentta.value="E";
    }
  }

//kuvasovelluksen käyttöliittymää ohjaava selainkoodi

//muutettu s.e. jos kuvan kokoattribuuttia ei ole (selain ei tunnista sitä), palautetaan 0
function annaKuvanKoko(objKuva){
    try{
    var i = objKuva.fileSize;
	return i;
    }
  catch(e){
    return 0;
    }
}

function annaKuvanLahde(objKuva){
  try{
    var s = objKuva.src;
	if(s.substr(0,8)=="file:///"){
	  var s2 = s.substr(8);
	  var a = s2.split("/");
	  return unescape(a.join("\\"));
	  }
	else{  
   	  return s;
	  }
    }
  catch(e){
    }
}
function tarkastaKuva(objFileField, objKuva, maxKoko){
  var msg;
  try{
//    alert(objFileField.document.location.href);
//    alert(objFileField.document.parent.frames[0].document.forms[0].TAULU_ID.value);
//    alert(objFileField.document.parentWindow.parent.frames[0].document.forms[0].TAULU_ID.value);
    if(objFileField.value==""){
	  alert("Valitse kuvatiedosto!");
	  return false;
	  }
	 var lahde = annaKuvanLahde(objKuva);  
    if(objFileField.value!=lahde){
	  msg = "Sivulla näkyvä kuva " + lahde 
	      + " ei ole \nvalitsemasi kuvatiedosto." + objFileField.value 
		  + "\nVarmistu esikatselulla, että liität oikean kuvan."
	  alert(msg);
	  return false;
	  }
	  
  //ensin tyhjäarvo-if ja vastaavuus-if
    var iKoko = annaKuvanKoko(objKuva);
    if(iKoko>maxKoko){
	  msg="Kuva on liian suuri (" + iKoko + " tavua)\nmaksimikoko on " + maxKoko + " tavua";
	  alert(msg);
	  return false;
      }
    return true;
    }
  catch(e){
    alert(e.description);
    }
}
function esikatsele(objFileField, objKuva, strTyypit){
  try{
        var bTypeOK=false;
	var sValue = objFileField.value;
	if(sValue==""){
	  alert("valitse tiedosto");
	  return false;
	  }
	var i = sValue.lastIndexOf(".");
	if(i<0){
	  alert("virheellinen tiedostonimi");
	  return false;
	  }
	var sFiletype = sValue.substr(i+1).toLowerCase();
        var aTypes=strTyypit.split(", ");
        for(i=0;i<aTypes.length;i++){
           if(sFiletype==aTypes[i]){
             bTypeOK=true;
             }
           }
        if(bTypeOK){
    var re = /\\/gi;
    var replaced = "file:///" + sValue.replace(re, "/");
//     alert(replaced);
	  objKuva.src = replaced;
 	  return true;
	  }
	else{
	  var msg = "virheellinen tiedostotyyppi ." + sFiletype;
	  alert(msg);
	  return false;
	  }  
    }
  catch(e){
    }
}

//uudet select-valikoiden synkronisointifunktiot, valinnat-taulukko määritelty ylempänä, r. 9-11

function lataaValinnat(objSelect, iIndex){
  var i;
  valinnat[iIndex].length=0;
  for(i=0;i<objSelect.options.length;i++){
    valinnat[iIndex][i] = objSelect.options.item(i);
    }
  }
function rajaaValinnat(objMasterSelect, objSlaveSelect, iIndex, strDefVal){
  var i;
  var valittu = objMasterSelect.options[objMasterSelect.selectedIndex].value;
  objSlaveSelect.options.length = 0;
  for(i=0;i<valinnat[iIndex].length;i++){
    if(valinnat[iIndex][i].id==valittu || valinnat[iIndex][i].value==strDefVal){
      objSlaveSelect.options.add(valinnat[iIndex][i]);
      }
    }
  objSlaveSelect.options[0].selected=true;
  }

function rajaaValinnat2(objMasterSelect, objSlaveSelect, iIndex, strDefVal, strDefVal2){
  var i;
  var valittu = objMasterSelect.options[objMasterSelect.selectedIndex].value;
  objSlaveSelect.options.length = 0;
  for(i=0;i<valinnat[iIndex].length;i++){
    if(valinnat[iIndex][i].id==valittu || valinnat[iIndex][i].value==strDefVal || valinnat[iIndex][i].value==strDefVal2){
      objSlaveSelect.options.add(valinnat[iIndex][i]);
      }
    }
  objSlaveSelect.options[0].selected=true;
  }
//uusi tiedostoliitteiden tarkastusfunktio
function tarkastaTiedosto(objFileField, strTyypit){
  try{
    var bTypeOK=false;
	  var sValue = objFileField.value;
	  if(sValue==""){
	    alert("valitse tiedosto");
	    return false;
	    }
	  var i = sValue.lastIndexOf(".");
	  if(i<0){
	    alert("virheellinen tiedostonimi");
	    return false;
	    }
	  var sFiletype = sValue.substr(i+1).toLowerCase();
    var aTypes=strTyypit.split(", ");
    for(i=0;i<aTypes.length;i++){
      if(sFiletype==aTypes[i]){
        bTypeOK=true;
        }
      }
    if(bTypeOK){
 	  return true;
	    }
	  else{
	    var msg = "virheellinen tiedostotyyppi ." + sFiletype;
	    alert(msg);
	    return false;
	    }  
    }
  catch(e){
    alert(e.description);
    }
  }
//uusi tarkastusfunktio, joka ei pakota esikatseluun
function tarkastaKuva2(objFileField, objKuva, maxKoko, strTyypit){
  var msg;
  try{
    if(!(tarkastaTiedosto(objFileField, strTyypit))){
	  return false;
	  }
    var lahde = annaKuvanLahde(objKuva);
    var tiedostopolku = objFileField.value;
    if(tiedostopolku!=lahde && lahde.indexOf("kuvapohja.gif") < 0){
	  msg = "Sivulla näkyvä kuva " + lahde
              + " ei ole \nvalitsemasi kuvatiedosto." + objFileField.value
              + "\n\nHaluatko varmasti tallentaa kuvan ilman esikatselua?"
	  if(!confirm(msg)){
	  return false;}
	  }
  //ensin tyhjäarvo-if ja vastaavuus-if
    var iKoko = annaKuvanKoko(objKuva);
    if(iKoko>maxKoko){
	  msg="Kuva on liian suuri (" + iKoko + " tavua)\nmaksimikoko on " + maxKoko + " tavua";
	  alert(msg);
	  return false;
      }
    return true;
    }
  catch(e){
    alert(e.description);
    }
}
function getErrorMessage(oForm, sFieldname, sSuffix){
  try{
     var errmsgfieldname = sSuffix + sFieldname;
     if(oForm[errmsgfieldname]){
       return oForm[errmsgfieldname].value;
       }
     else{
       return ("Virhe kentän " + sFieldname + " syötteentarkastuksessa");
       }
     }
  catch(e){
    return e.description;
    }
  }
