<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Jupp_sobivat_javascripti_atribuutide_kasutuseks</id>
	<title>Jupp sobivat javascripti atribuutide kasutuseks - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Jupp_sobivat_javascripti_atribuutide_kasutuseks"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Jupp_sobivat_javascripti_atribuutide_kasutuseks&amp;action=history"/>
	<updated>2026-11-07T00:46:17Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Jupp_sobivat_javascripti_atribuutide_kasutuseks&amp;diff=8284&amp;oldid=prev</id>
		<title>Tammet – 31. märts 2009, kell 11:45</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Jupp_sobivat_javascripti_atribuutide_kasutuseks&amp;diff=8284&amp;oldid=prev"/>
		<updated>2009-03-31T11:45:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// ====== on load calls  =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function standardOnload(pagename) {&lt;br /&gt;
   initHighlight();&lt;br /&gt;
   markFields();&lt;br /&gt;
   showErrorMessages();   &lt;br /&gt;
   setValidationHandlers();&lt;br /&gt;
   setMenuChangeHandler();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function safeHTMLstr(str)&lt;br /&gt;
{&lt;br /&gt;
str=str.replace(/\\/g,&amp;#039; &amp;#039;)&lt;br /&gt;
str=str.replace(/\&amp;#039;/g,&amp;#039; &amp;#039;)&lt;br /&gt;
str=str.replace(/&amp;quot;/g,&amp;#039; &amp;#039;)&lt;br /&gt;
return str&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function initHighlight() {&lt;br /&gt;
    if (!document.getElementsByTagName){ return; }&lt;br /&gt;
    var allfields = document.getElementsByTagName(&amp;quot;input&amp;quot;);&lt;br /&gt;
    // loop through all input tags and add events&lt;br /&gt;
    for (var i=0; i&amp;lt;allfields.length; i++){&lt;br /&gt;
        var field = allfields[i];&lt;br /&gt;
        if (((field.getAttribute(&amp;quot;type&amp;quot;) == &amp;quot;text&amp;quot;) || &lt;br /&gt;
            (field.getAttribute(&amp;quot;type&amp;quot;) == &amp;quot;password&amp;quot;)) &amp;amp;&amp;amp; !field.getAttribute(&amp;quot;readonly&amp;quot;)) {&lt;br /&gt;
            field.onfocus = function () {this.style.backgroundColor = &amp;#039;#FFFF99&amp;#039;;}&lt;br /&gt;
            field.onblur = function () {this.style.backgroundColor = &amp;#039;#FFFFFF&amp;#039;;}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    var allfields = document.getElementsByTagName(&amp;quot;textarea&amp;quot;);    &lt;br /&gt;
    for (var i=0; i&amp;lt;allfields.length; i++){&lt;br /&gt;
        var field = allfields[i];&lt;br /&gt;
        if (!field.getAttribute(&amp;quot;readonly&amp;quot;)) {&lt;br /&gt;
        	field.onfocus = function () {this.style.backgroundColor = &amp;#039;#FFFF99&amp;#039;;}&lt;br /&gt;
        	field.onblur = function () {this.style.backgroundColor = &amp;#039;#FFFFFF&amp;#039;;}&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    var allfields = document.getElementsByTagName(&amp;quot;select&amp;quot;);    &lt;br /&gt;
    for (var i=0; i&amp;lt;allfields.length; i++){&lt;br /&gt;
        var field = allfields[i];        &lt;br /&gt;
        field.onfocus = function () {this.style.backgroundColor = &amp;#039;#FFFF99&amp;#039;;}&lt;br /&gt;
        field.onblur = function () {this.style.backgroundColor = &amp;#039;#FFFFFF&amp;#039;;}        &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setValidationHandlers() {&lt;br /&gt;
    if(!document.getElementsByTagName || !document.getElementById) return false;&lt;br /&gt;
    var formCollection = document.getElementsByTagName(&amp;#039;input&amp;#039;);&lt;br /&gt;
    var formCollectionLength = formCollection.length;&lt;br /&gt;
&lt;br /&gt;
    for (i=0; i&amp;lt;formCollectionLength; i++) {&lt;br /&gt;
      dt = formCollection[i].getAttribute(&amp;#039;datatype&amp;#039;);&lt;br /&gt;
      if (dt == &amp;quot;date&amp;quot; || dt==&amp;quot;nofuturedate&amp;quot; || dt==&amp;quot;nopastdate&amp;quot;) {&lt;br /&gt;
          formCollection[i].onkeydown = vld_kpv;&lt;br /&gt;
      } else if (dt == &amp;quot;estik&amp;quot;) {&lt;br /&gt;
          formCollection[i].onkeyup = debug_ik;&lt;br /&gt;
      }&lt;br /&gt;
      else if (dt == &amp;quot;period&amp;quot;) {&lt;br /&gt;
          formCollection[i].onkeydown = vld_period;&lt;br /&gt;
      }&lt;br /&gt;
      //mf = formCollection[i].getAttribute(&amp;#039;mustfill&amp;#039;);&lt;br /&gt;
   &lt;br /&gt;
      &lt;br /&gt;
      &lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function setMenuChangeHandler() {&lt;br /&gt;
    // kui dokus on olemas mainForm ja MenuNavigationForm siis pane viimasele&lt;br /&gt;
    // onSubmit() handler kylge mis kontrollib kas mainFormis on muudatusi&lt;br /&gt;
    // ja kui on siis kysib kas on vaja salvestada&lt;br /&gt;
    mainF = document.forms.mainForm;&lt;br /&gt;
    navForm = document.forms.MenuNavigationForm;&lt;br /&gt;
&lt;br /&gt;
    if (!mainF || !navForm)&lt;br /&gt;
        return true;&lt;br /&gt;
    OnMenuNavigate = confirmChanged;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function markFields() {&lt;br /&gt;
    var e;&lt;br /&gt;
    try {&lt;br /&gt;
        for (var i=0;i&amp;lt;errFields.length;i++) {&lt;br /&gt;
            e=document.getElementsByName(errFields[i][0]);  &lt;br /&gt;
            for(var j=0;j&amp;lt;e.length;j++) {&lt;br /&gt;
              if (j==0) e[j].focus();             &lt;br /&gt;
              e[j].style.backgroundColor = &amp;#039;yellow&amp;#039;;       &lt;br /&gt;
            }&lt;br /&gt;
        }           &lt;br /&gt;
    } catch(err) {&lt;br /&gt;
    }    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ==== checking and errors ==== &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function fieldCheck(tablename) {	// tablename is actually not used when calling!&lt;br /&gt;
    /*&lt;br /&gt;
     checks all the fields in the form, several special attributes are used that describe how field should&lt;br /&gt;
     behave.&lt;br /&gt;
     nicename - name of the field that is shown to user in error messages/other fialogs&lt;br /&gt;
     mustfill - element must have some kind of value&lt;br /&gt;
     condfill - element should have some kind of value, if not then we ask user if he really wants to continue&lt;br /&gt;
     datatype - type of the field&lt;br /&gt;
         date - date in DD.MM.YYYY format&lt;br /&gt;
         int - integer&lt;br /&gt;
         nonegint - positive integer&lt;br /&gt;
         estzip - estonian postal zip code&lt;br /&gt;
         estik - estonian ID code, tag that uses this should have also ref_bt_field and ref_gender_field that contain values of the birthday and gender fieldnames respectivelly&lt;br /&gt;
         email - email address (FIXME: implement)&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
    if (!document.getElementsByTagName){ return; }&lt;br /&gt;
    var htmlobs = new Array()&lt;br /&gt;
    var textfields = document.getElementsByTagName(&amp;quot;input&amp;quot;);&lt;br /&gt;
    var areafields = document.getElementsByTagName(&amp;quot;textarea&amp;quot;);&lt;br /&gt;
    var selectfields = document.getElementsByTagName(&amp;quot;select&amp;quot;); &lt;br /&gt;
    htmlobs.push(textfields,areafields,selectfields);&lt;br /&gt;
    var tablenamepref;&lt;br /&gt;
    var field;&lt;br /&gt;
    var fname;&lt;br /&gt;
    var nfname;&lt;br /&gt;
    var tname;&lt;br /&gt;
    var notempty;&lt;br /&gt;
    var datatype;&lt;br /&gt;
    var condfill;&lt;br /&gt;
    var condfill_c = false; // when user tells us he wants to save even though some condfill fields are unfilled&lt;br /&gt;
                            // then we set this to true so we wouldn&amp;#039;t ask it again for each field&lt;br /&gt;
    var val;&lt;br /&gt;
    var condfld;&lt;br /&gt;
    &lt;br /&gt;
	    &lt;br /&gt;
    if (&amp;#039;function&amp;#039; == typeof window.localPreFieldCheck) 	// localPreFieldCheck if it exists sets up data (like mustfills etc)&lt;br /&gt;
    	if (!window.localPreFieldCheck())						// for this global fieldCheck(), should return true if ok&lt;br /&gt;
    		return false;&lt;br /&gt;
    &lt;br /&gt;
    if (tablename!=null &amp;amp;&amp;amp; tablename!=&amp;#039;&amp;#039;) tablenamepref=tablename+&amp;#039;_&amp;#039;;&lt;br /&gt;
    else tablenamepref=null;       &lt;br /&gt;
    for (var j=0; j&amp;lt;htmlobs.length; j++) {&lt;br /&gt;
        for (var i=0; i&amp;lt;htmlobs[j].length; i++){&lt;br /&gt;
            field=htmlobs[j][i]            &lt;br /&gt;
            fname=field.name;           &lt;br /&gt;
            if (tablenamepref!=null &amp;amp;&amp;amp; fname!=null &amp;amp;&amp;amp; fname.search(tablenamepref)!=0) {&lt;br /&gt;
                continue;&lt;br /&gt;
            }&lt;br /&gt;
            notempty=field.getAttribute(&amp;#039;mustfill&amp;#039;);&lt;br /&gt;
            condfill=field.getAttribute(&amp;#039;condfill&amp;#039;);&lt;br /&gt;
            //alert(&amp;quot;Fname=&amp;quot;+fname+&amp;quot; condfill=&amp;quot;+condfill);&lt;br /&gt;
            datatype=field.getAttribute(&amp;#039;datatype&amp;#039;);&lt;br /&gt;
            val=field.value;&lt;br /&gt;
            //alert(fname+&amp;#039;|&amp;#039;+notempty+&amp;#039;|&amp;#039;+datatype+&amp;#039;|&amp;#039;+val);      &lt;br /&gt;
            if ((notempty==&amp;#039;yes&amp;#039; || condfill==&amp;#039;yes&amp;#039;) &amp;amp;&amp;amp; (val==null || val==&amp;#039;&amp;#039;) &amp;amp;&amp;amp; !condfill_c) {       				&lt;br /&gt;
			    nfname=field.getAttribute(&amp;#039;nicename&amp;#039;);&lt;br /&gt;
				if (nfname==null || nfname==&amp;#039;&amp;#039;) {				&lt;br /&gt;
					for(var l=0;l&amp;lt;document.getElementsByTagName(&amp;#039;label&amp;#039;).length;l++) {// mihkel added labels here&lt;br /&gt;
						if(document.getElementsByTagName(&amp;#039;label&amp;#039;)[l].htmlFor==field.id) {&lt;br /&gt;
							nfname=document.getElementsByTagName(&amp;#039;label&amp;#039;)[l].firstChild.nodeValue;&lt;br /&gt;
							break;&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					if (nfname == null || nfname == &amp;#039;&amp;#039;) &lt;br /&gt;
						nfname = fname;          	&lt;br /&gt;
				}           &lt;br /&gt;
                //alert(&amp;#039;VĆ¤li &amp;#039;+nfname+&amp;#039; tuleb tĆ¤ita!&amp;#039;);                                                                                                          &lt;br /&gt;
                if (condfill == &amp;#039;yes&amp;#039;) {&lt;br /&gt;
                    // field is not absolutelly mandatory, we just must ask if user really wants to save data&lt;br /&gt;
                    // when this is not filled&lt;br /&gt;
                    condfld=document.getElementById(&amp;#039;condfill_ok&amp;#039;);&lt;br /&gt;
                    if (condfld &amp;amp;&amp;amp; condfld!=null) {&lt;br /&gt;
                        condfld.value=&amp;#039;0&amp;#039;;&lt;br /&gt;
                    }&lt;br /&gt;
                    if (confirm(&amp;#039;Kohustuslik vĆ¤li &amp;#039;+nfname+&amp;#039; on tĆ¤itmata. Kas oled kindel, et soovid salvestada?&amp;#039;)) {&lt;br /&gt;
                        condfill_c = true;&lt;br /&gt;
                    } &lt;br /&gt;
                } else {&lt;br /&gt;
                    alert(&amp;#039;VĆ¤li &amp;#039;+nfname+&amp;#039; tuleb tĆ¤ita!&amp;#039;);   &lt;br /&gt;
                }&lt;br /&gt;
                if (!condfill_c) { // removed by tanel:  &amp;amp;&amp;amp; condfill&lt;br /&gt;
                    field.onfocus = function () {this.style.backgroundColor = &amp;#039;yellow&amp;#039;;}&lt;br /&gt;
                    field.focus();&lt;br /&gt;
                    return false;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (datatype==&amp;quot;date&amp;quot; &amp;amp;&amp;amp; val.length &amp;gt; 0) {&lt;br /&gt;
                if (!checkDate(field)) {&lt;br /&gt;
                    field.focus();&lt;br /&gt;
            	    return false;&lt;br /&gt;
           	    }&lt;br /&gt;
            } else if (datatype==&amp;quot;nofuturedate&amp;quot; &amp;amp;&amp;amp; val.length &amp;gt; 0) {&lt;br /&gt;
                if (!checkDate(field)) {&lt;br /&gt;
                    field.focus();&lt;br /&gt;
            	    return false;&lt;br /&gt;
           	    }    &lt;br /&gt;
            } else if (datatype==&amp;quot;nopastdate&amp;quot; &amp;amp;&amp;amp; val.length &amp;gt; 0) {&lt;br /&gt;
                if (!checkNopastDate(field)) {&lt;br /&gt;
                    field.focus();&lt;br /&gt;
            	    return false;&lt;br /&gt;
           	    }                    &lt;br /&gt;
            } else if ((datatype == &amp;quot;int&amp;quot; || datatype == &amp;quot;nonegint&amp;quot;) &amp;amp;&amp;amp; val.length &amp;gt; 0) {&lt;br /&gt;
            	var intValue = parseInt(val, 10);&lt;br /&gt;
            	nfname = field.getAttribute(&amp;#039;nicename&amp;#039;);&lt;br /&gt;
                var strIbuf = &amp;#039;&amp;#039;+intValue;&lt;br /&gt;
                // length check is needed for cases like 28tere that will be converted to int as 28&lt;br /&gt;
            	if (isNaN(intValue) || (strIbuf.length != val.length)) {&lt;br /&gt;
 					alert(&amp;#039;VĆ¤li &amp;#039;+nfname+&amp;#039; peab olema tĆ¤isarv!&amp;#039;);&lt;br /&gt;
            		field.focus();&lt;br /&gt;
            		return false;          		&lt;br /&gt;
            	}           	&lt;br /&gt;
            	if (datatype == &amp;quot;nonegint&amp;quot; &amp;amp;&amp;amp; intValue &amp;lt; 0) {&lt;br /&gt;
            		nfname = field.getAttribute(&amp;#039;nicename&amp;#039;);&lt;br /&gt;
            		alert(&amp;#039;VĆ¤li &amp;#039;+nfname+&amp;#039; peab olema mittenegatiivne tĆ¤isarv!&amp;#039;);&lt;br /&gt;
            		field.focus();&lt;br /&gt;
            		return false;&lt;br /&gt;
            	}           &lt;br /&gt;
            } else if (datatype == &amp;quot;estzip&amp;quot; &amp;amp;&amp;amp; val.length &amp;gt; 0) {&lt;br /&gt;
                tmp_ival = parseInt(val, 10);&lt;br /&gt;
                nfname = field.getAttribute(&amp;#039;nicename&amp;#039;);&lt;br /&gt;
                if (val.length != 5 || isNaN(tmp_ival)) {&lt;br /&gt;
                    alert(&amp;#039;VĆ¤li &amp;#039;+nfname+&amp;#039; peab olema eesti postiindeksi formaadis (5 kohaline tĆ¤isarv)&amp;#039;);&lt;br /&gt;
                    field.focus();&lt;br /&gt;
                    return false;&lt;br /&gt;
                }&lt;br /&gt;
            } else if (datatype == &amp;quot;estik&amp;quot; &amp;amp;&amp;amp; val.length &amp;gt; 0) {&lt;br /&gt;
                var birthdate_field_name = field.getAttribute(&amp;#039;ref_bt_field&amp;#039;);&lt;br /&gt;
                var gender_field_name = field.getAttribute(&amp;#039;ref_gender_field&amp;#039;);&lt;br /&gt;
                var bt_field = document.getElementsByName(birthdate_field_name)[0];&lt;br /&gt;
                var gender_field = document.getElementsByName(gender_field_name)[0];&lt;br /&gt;
                var ikcheck_retval = false;&lt;br /&gt;
&lt;br /&gt;
                if (bt_field) {&lt;br /&gt;
                    ikcheck_retval = check_isikukood(field, bt_field, gender_field, false)&lt;br /&gt;
                    if (ikcheck_retval == false)&lt;br /&gt;
                        return false&lt;br /&gt;
                } else {&lt;br /&gt;
                    alert(&amp;quot;Sul on defineeritud vĆ¤li tĆ¼Ć¼biga estik. Defineeri sellele ka ref_bt_field ja ref_gender_field atribuudid, mis sisaldavad antud isikukoodiga seotud sĆ¼nniaja ja soo vĆ¤ljade nimesid, muidu ei saa automaatsed kontrollid tĆ¤ismahus toimida.&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }          &lt;br /&gt;
    }&lt;br /&gt;
  	&lt;br /&gt;
    if (&amp;#039;function&amp;#039; == typeof window.localFieldCheck) {&lt;br /&gt;
    	return window.localFieldCheck();&lt;br /&gt;
    }	&lt;br /&gt;
    else {&lt;br /&gt;
    	return true;&lt;br /&gt;
    }	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function showErrorMessages() {&lt;br /&gt;
    try {&lt;br /&gt;
        if (errorMessages!=&amp;#039;&amp;#039;) {&lt;br /&gt;
        	if(errorMessages!=&amp;#039;probleem&amp;#039;)&lt;br /&gt;
            	alert(&amp;quot;Viga: &amp;quot;+errorMessages);&lt;br /&gt;
            return false;&lt;br /&gt;
        } else {&lt;br /&gt;
            return true;&lt;br /&gt;
        }       &lt;br /&gt;
    } catch(err) {&lt;br /&gt;
    }     &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function check_isikukood(ik_field, birthdate_field, gender_field, mustfill) {&lt;br /&gt;
	&lt;br /&gt;
	var kood = ik_field.value;&lt;br /&gt;
	var koodNiceName =  ik_field.getAttribute(&amp;#039;nicename&amp;#039;);&lt;br /&gt;
	var res = false;&lt;br /&gt;
	var msg = &amp;quot;&amp;quot;;&lt;br /&gt;
	kood=trim(kood);&lt;br /&gt;
			&lt;br /&gt;
    if (kood.length == 0 &amp;amp;&amp;amp; !mustfill)&lt;br /&gt;
    	return true;&lt;br /&gt;
 	&lt;br /&gt;
    if (kood.length != 11) {&lt;br /&gt;
       msg = koodNiceName + &amp;quot;: vale pikkus&amp;quot;;&lt;br /&gt;
 		alert(msg);&lt;br /&gt;
 		ik_field.focus();&lt;br /&gt;
 		return false;&lt;br /&gt;
 	   }&lt;br /&gt;
        &lt;br /&gt;
    var year = parseInt(kood.substring(1,3), 10);&lt;br /&gt;
    var monthS = kood.substring(3,5);&lt;br /&gt;
    var dayS = kood.substring(5,7);&lt;br /&gt;
    if (monthS.substring(0,1) == &amp;#039;0&amp;#039;) {&lt;br /&gt;
        monthS = monthS.substring(1,2);&lt;br /&gt;
    }&lt;br /&gt;
    if (dayS.substring(0,1) == &amp;#039;0&amp;#039;) {&lt;br /&gt;
        dayS = dayS.substring(1,2);&lt;br /&gt;
    }&lt;br /&gt;
	var month = parseInt(monthS, 10);&lt;br /&gt;
	var day = parseInt(dayS, 10);&lt;br /&gt;
	var century = parseInt(kood.substring(0,1), 10);&lt;br /&gt;
    //alert(&amp;quot;yearS=&amp;quot;+kood.substring(1,3)+&amp;quot; monthS=&amp;quot;+monthS+&amp;quot; dayS=&amp;quot;+dayS)&lt;br /&gt;
    //alert(&amp;quot;year=&amp;quot;+year+&amp;quot; month=&amp;quot;+month+&amp;quot; day=&amp;quot;+day);&lt;br /&gt;
	var ik_gender;&lt;br /&gt;
	&lt;br /&gt;
	if (isNaN(year) || isNaN(month) || isNaN(day) || isNaN(century)) {&lt;br /&gt;
		alert(koodNiceName + &amp;quot;: vale sugu vĆµi sĆ¼nniaeg isikukoodis&amp;quot;);&lt;br /&gt;
		ik_field.focus();&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (century == 1 || century == 2)&lt;br /&gt;
	    year = 1800 + year;&lt;br /&gt;
	else if (century == 3 || century == 4)&lt;br /&gt;
		year = 1900 + year;&lt;br /&gt;
	else if (century == 5 || century == 6)&lt;br /&gt;
		year = 2000 + year;&lt;br /&gt;
	else {&lt;br /&gt;
		msg = koodNiceName + &amp;quot;: vale sugu vĆµi sĆ¼nniaja sajand&amp;quot;;&lt;br /&gt;
		alert(msg);&lt;br /&gt;
		ik_field.focus();&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
    if (!checkDate2(day, month, year)) {&lt;br /&gt;
        msg = koodNiceName + &amp;quot;: vale sĆ¼nniaeg isikukoodis&amp;quot;;&lt;br /&gt;
        alert(msg);&lt;br /&gt;
        ik_field.focus();&lt;br /&gt;
        return false;&lt;br /&gt;
    } else if (parseInt(kood.substring(10,11), 10) != kontrollsumma(kood.substring(0,10))) {&lt;br /&gt;
       msg = koodNiceName +  &amp;quot;: vale kontrollsumma!&amp;quot;;&lt;br /&gt;
	   alert(msg);&lt;br /&gt;
	   ik_field.focus();&lt;br /&gt;
	   return false;&lt;br /&gt;
    }&lt;br /&gt;
   &lt;br /&gt;
    if (gender_field) {&lt;br /&gt;
     	if (century % 2) &lt;br /&gt;
     		ik_gender = &amp;#039;M&amp;#039;;&lt;br /&gt;
     	else&lt;br /&gt;
     		ik_gender = &amp;#039;N&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
     	if (gender_field.value &amp;amp;&amp;amp; gender_field.value != &amp;#039;X&amp;#039; &amp;amp;&amp;amp; gender_field.value != ik_gender) {&lt;br /&gt;
     		msg = koodNiceName +  &amp;quot;: sugu ei Ć¼hildu vĆ¤ljaga &amp;quot; + gender_field.getAttribute(&amp;#039;nicename&amp;#039;) ;&lt;br /&gt;
     		alert(msg);&lt;br /&gt;
     		gender_field.focus();&lt;br /&gt;
     		return false&lt;br /&gt;
     	} else if (!gender_field.value) {&lt;br /&gt;
     		gender_field.value = ik_gender;&lt;br /&gt;
     	}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (birthdate_field) {&lt;br /&gt;
    	var ikISObdate = year.toString() + &amp;quot;-&amp;quot;;&lt;br /&gt;
     	if (month &amp;lt; 10)&lt;br /&gt;
     		ikISObdate += &amp;quot;0&amp;quot;;&lt;br /&gt;
     	ikISObdate += month + &amp;quot;-&amp;quot;;&lt;br /&gt;
     	if (day &amp;lt; 10)&lt;br /&gt;
     		ikISObdate += &amp;quot;0&amp;quot;;&lt;br /&gt;
     	ikISObdate += day;&lt;br /&gt;
    &lt;br /&gt;
    	if (birthdate_field.value) {&lt;br /&gt;
    	    if (checkDate(birthdate_field)) {&lt;br /&gt;
    		    var ISObdtate = isoDateFromEstonian(birthdate_field.value);&lt;br /&gt;
     			//alert(ikISObdate);&lt;br /&gt;
     			//alert(ISObdtate);&lt;br /&gt;
     			if (ikISObdate!= ISObdtate) {&lt;br /&gt;
     				msg = koodNiceName +  &amp;quot;: sĆ¼nniaeg ei Ć¼hildu vĆ¤ljaga &amp;quot; + birthdate_field.getAttribute(&amp;#039;nicename&amp;#039;) ;&lt;br /&gt;
     				alert(msg);&lt;br /&gt;
     				birthdate_field.focus();&lt;br /&gt;
     				return false&lt;br /&gt;
     			}&lt;br /&gt;
     		}&lt;br /&gt;
     	} else { // birthday has no value&lt;br /&gt;
     		birthdate_field.value = estonianDateFromISO(ikISObdate);&lt;br /&gt;
     	}&lt;br /&gt;
    } // has birthday field attached&lt;br /&gt;
   &lt;br /&gt;
 	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function checkField(theField) {&lt;br /&gt;
	var val = theField.value;&lt;br /&gt;
	var niceName =  theField.getAttribute(&amp;#039;nicename&amp;#039;);&lt;br /&gt;
	if (!val || val.length== 0) {&lt;br /&gt;
		alert(&amp;quot;Viga: &amp;quot; + niceName + &amp;quot; sisestamata&amp;quot;);&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function check_isikukood_or_regkood(isfyysiline, ik_field, birthdate_field, gender_field, mustFill) {&lt;br /&gt;
	&lt;br /&gt;
	if (isfyysiline)&lt;br /&gt;
		return check_isikukood(ik_field, birthdate_field, gender_field, mustFill);&lt;br /&gt;
	else {&lt;br /&gt;
		return checkRegkood(ik_field, mustFill);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function checkRegkood(codeField, mustFill)&lt;br /&gt;
{&lt;br /&gt;
	if (!mustFill &amp;amp;&amp;amp; codeField.value.length == 0) {&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
	if (codeField.value.length != 8 || !isInteger(codeField.value)) {&lt;br /&gt;
		alert(&amp;quot;Ć„riregistri kood peab olema 8 kohaline number&amp;quot;);&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var dtCh= &amp;quot;.&amp;quot;;&lt;br /&gt;
var minYear=1900;&lt;br /&gt;
var maxYear=2100;&lt;br /&gt;
&lt;br /&gt;
function isInteger(s){&lt;br /&gt;
	var i;&lt;br /&gt;
    for (i = 0; i &amp;lt; s.length; i++){   &lt;br /&gt;
        // Check that current character is number.&lt;br /&gt;
        var c = s.charAt(i);&lt;br /&gt;
        if (((c &amp;lt; &amp;quot;0&amp;quot;) || (c &amp;gt; &amp;quot;9&amp;quot;))) return false;&lt;br /&gt;
    }&lt;br /&gt;
    // All characters are numbers.&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function stripString(s) {	// strips leading and trailing whitespaces&lt;br /&gt;
	&lt;br /&gt;
	if (!s)&lt;br /&gt;
		return s;&lt;br /&gt;
	&lt;br /&gt;
	var i;&lt;br /&gt;
   &lt;br /&gt;
    var white = &amp;quot; \t\r\n&amp;quot;;&lt;br /&gt;
    var start = -1;&lt;br /&gt;
    var end = -1;&lt;br /&gt;
    var c;&lt;br /&gt;
    &lt;br /&gt;
    // Search through string&amp;#039;s characters one by one.&lt;br /&gt;
    // If character is not in bag, append to returnString.&lt;br /&gt;
    for (i = 0; i &amp;lt; s.length; i++){   &lt;br /&gt;
        c = s.charAt(i);&lt;br /&gt;
        if (white.indexOf(c) == -1) {&lt;br /&gt;
        	start = i;&lt;br /&gt;
        	break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    for (i=s.length; i &amp;gt;= 0; i--) {&lt;br /&gt;
    	 c = s.charAt(i);&lt;br /&gt;
    	 if (white.indexOf(c) == -1) {&lt;br /&gt;
    	 	end = i+1;&lt;br /&gt;
    	 	break;&lt;br /&gt;
    	 }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    if (end &amp;gt; start &amp;amp;&amp;amp; end &amp;gt; -1 &amp;amp;&amp;amp; start &amp;gt; -1)&lt;br /&gt;
    	return s.substring(start, end);&lt;br /&gt;
    else&lt;br /&gt;
    	return &amp;quot;&amp;quot;;&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function stripCharsInBag(s, bag){&lt;br /&gt;
	var i;&lt;br /&gt;
    var returnString = &amp;quot;&amp;quot;;&lt;br /&gt;
    // Search through string&amp;#039;s characters one by one.&lt;br /&gt;
    // If character is not in bag, append to returnString.&lt;br /&gt;
    for (i = 0; i &amp;lt; s.length; i++){   &lt;br /&gt;
        var c = s.charAt(i);&lt;br /&gt;
        if (bag.indexOf(c) == -1) returnString += c;&lt;br /&gt;
    }&lt;br /&gt;
    return returnString;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function daysInFebruary (year){&lt;br /&gt;
	// February has 29 days in any year evenly divisible by four,&lt;br /&gt;
    // EXCEPT for centurial years which are not also divisible by 400.&lt;br /&gt;
    return (((year % 4 == 0) &amp;amp;&amp;amp; ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );&lt;br /&gt;
}&lt;br /&gt;
function DaysArray(n) {&lt;br /&gt;
	for (var i = 1; i &amp;lt;= n; i++) {&lt;br /&gt;
		this[i] = 31&lt;br /&gt;
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}&lt;br /&gt;
		if (i==2) {this[i] = 29}&lt;br /&gt;
   } &lt;br /&gt;
   return this&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function checkDateOrDateInterval(dateField)&lt;br /&gt;
{&lt;br /&gt;
	var dtStr = dateField.value;&lt;br /&gt;
	var nicename = dateField.getAttribute(&amp;#039;nicename&amp;#039;);&lt;br /&gt;
	var pos1 = dtStr.indexOf(&amp;quot;-&amp;quot;);&lt;br /&gt;
	var dtStr1;&lt;br /&gt;
	var dtStr2;&lt;br /&gt;
	&lt;br /&gt;
	if (pos1 &amp;gt;= 0) {&lt;br /&gt;
		dtStr1 = stripString(dtStr.substring(0,pos1));&lt;br /&gt;
		dtStr2 = stripString(dtStr.substring(pos1+1));&lt;br /&gt;
		&lt;br /&gt;
		//alert(&amp;quot;Esimene pool on |&amp;quot;+ dtStr1 + &amp;quot;|&amp;quot;);&lt;br /&gt;
		//alert(&amp;quot;Teine pool on |&amp;quot; + dtStr2 + &amp;quot;|&amp;quot;);&lt;br /&gt;
		&lt;br /&gt;
		var normalized1 = checkDateInternal(dtStr1, nicename, false, true);&lt;br /&gt;
		var normalized2 = checkDateInternal(dtStr2, nicename, false, true);&lt;br /&gt;
		&lt;br /&gt;
		if (!normalized1|| !normalized2) {&lt;br /&gt;
			alert(nicename + &amp;quot;: kuupĆ¤evade vahemik peab olema kujul pp.kk.aaaa-pp.kk.aaaa&amp;quot;);&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		var isoDate1 = isoDateFromEstonian(normalized1);&lt;br /&gt;
		var isoDate2 = isoDateFromEstonian(normalized2);&lt;br /&gt;
		&lt;br /&gt;
		if (isoDate2 &amp;lt; isoDate1) {&lt;br /&gt;
			alert(nicename + &amp;quot;: kuupĆ¤eva vahemiku lĆµppkuupĆ¤ev ei tohi olla vĆ¤iksem kui alguskuupĆ¤ev&amp;quot;);&lt;br /&gt;
			return false;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if (normalized1 != dtStr1 || normalized2 != dtStr2) {&lt;br /&gt;
			var normalizedInterval = normalized1 + &amp;quot;-&amp;quot; + normalized2;&lt;br /&gt;
			dateField.value = normalizedInterval;&lt;br /&gt;
		&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
		return true;&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
		return checkDate(dateField);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function checkDate(dateField) {&lt;br /&gt;
&lt;br /&gt;
	var dtStr = dateField.value;&lt;br /&gt;
	var nicename = dateField.getAttribute(&amp;#039;nicename&amp;#039;);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	// dtstr = value, so that we can call it &lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
	return checkDateInternal(dtStr, nicename, dateField, true); // true = do alert&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function checkNofutureDate(dateField) {&lt;br /&gt;
&lt;br /&gt;
	var dtStr = dateField.value;&lt;br /&gt;
	var nicename = dateField.getAttribute(&amp;#039;nicename&amp;#039;);	&lt;br /&gt;
    var normalized1 = checkDateInternal(dtStr, nicename, dateField, true);    &lt;br /&gt;
		&lt;br /&gt;
	&lt;br /&gt;
    if (!normalized1) {			&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
    //alert(&amp;#039;in checkNofutureDate from &amp;#039;+dtStr+&amp;#039; normalized1 &amp;#039;+normalized1)&lt;br /&gt;
	var isoDate1 = isoDateFromEstonian(normalized1);&lt;br /&gt;
    /*&lt;br /&gt;
    var today = new Date();&lt;br /&gt;
	var tyear = today.getFullYear();&lt;br /&gt;
	var tmonth = today.getMonth() + 1;&lt;br /&gt;
    if (tmonth&amp;lt;10) tmonth=&amp;quot;0&amp;quot;+tmonth;&lt;br /&gt;
	var tday = today.getDate();&lt;br /&gt;
    if (tday&amp;lt;10) tday=&amp;quot;0&amp;quot;+tday;&lt;br /&gt;
    var curdate=tday+&amp;quot;.&amp;quot;+tmonth+&amp;quot;.&amp;quot;+tyear  &lt;br /&gt;
    var normalized2 = checkDateInternal(curdate, nicename, false, true);  &lt;br /&gt;
    */&lt;br /&gt;
    var normalized2=document.getElementById(&amp;#039;currentdate&amp;#039;);&lt;br /&gt;
    if (!normalized2 || normalized2==&amp;#039;&amp;#039; || normalized2==null) return normalized1;&lt;br /&gt;
    normalized2=normalized2.value;&lt;br /&gt;
    if (normalized2==null || normalized2==&amp;#039;&amp;#039;) return normalized1;&lt;br /&gt;
	var isoDate2 = isoDateFromEstonian(normalized2);&lt;br /&gt;
    //alert(&amp;#039;isoDate2 &amp;#039;+isoDate2+&amp;#039; isoDate1 &amp;#039;+isoDate1+&amp;#039; nicename &amp;#039;+nicename)&lt;br /&gt;
    if (isoDate2 &amp;lt; isoDate1) {&lt;br /&gt;
		alert(nicename + &amp;quot;: see kuupĆ¤ev ei tohi olla tulevikus&amp;quot;);&lt;br /&gt;
	    return false;&lt;br /&gt;
    } else {&lt;br /&gt;
        //alert(&amp;#039;normalized1 &amp;#039;+normalized1)&lt;br /&gt;
	    return normalized1;&lt;br /&gt;
    }    &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function checkNopastDate(dateField) {&lt;br /&gt;
&lt;br /&gt;
	var dtStr = dateField.value;&lt;br /&gt;
	var nicename = dateField.getAttribute(&amp;#039;nicename&amp;#039;);	&lt;br /&gt;
    var normalized1 = checkDateInternal(dtStr, nicename, dateField, true);    &lt;br /&gt;
		&lt;br /&gt;
	&lt;br /&gt;
    if (!normalized1) {			&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
	var isoDate1 = isoDateFromEstonian(normalized1);&lt;br /&gt;
    /*&lt;br /&gt;
    var today = new Date();&lt;br /&gt;
	var tyear = today.getFullYear();&lt;br /&gt;
	var tmonth = today.getMonth() + 1;&lt;br /&gt;
    if (tmonth&amp;lt;10) tmonth=&amp;quot;0&amp;quot;+tmonth;&lt;br /&gt;
	var tday = today.getDate();&lt;br /&gt;
    if (tday&amp;lt;10) tday=&amp;quot;0&amp;quot;+tday;&lt;br /&gt;
    var curdate=tday+&amp;quot;.&amp;quot;+tmonth+&amp;quot;.&amp;quot;+tyear  &lt;br /&gt;
    var normalized2 = checkDateInternal(curdate, nicename, false, true);  &lt;br /&gt;
    */&lt;br /&gt;
    var normalized2=document.getElementById(&amp;#039;currentdate&amp;#039;);&lt;br /&gt;
    if (!normalized2 || normalized2==&amp;#039;&amp;#039; || normalized2==null) return normalized1;&lt;br /&gt;
    normalized2=normalized2.value;&lt;br /&gt;
    if (normalized2==null || normalized2==&amp;#039;&amp;#039;) return normalized1;&lt;br /&gt;
	var isoDate2 = isoDateFromEstonian(normalized2);		  &lt;br /&gt;
    if (isoDate2 &amp;gt; isoDate1) {&lt;br /&gt;
		alert(nicename + &amp;quot;: see kuupĆ¤ev ei tohi olla minevikus&amp;quot;);&lt;br /&gt;
	    return false;&lt;br /&gt;
    } else {    &lt;br /&gt;
        return normalized1;&lt;br /&gt;
    }    	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function checkDateInternal(dtStr, nicename, dateField, doAlert) {&lt;br /&gt;
&lt;br /&gt;
	var dtStr2 = dtStr;&lt;br /&gt;
	&lt;br /&gt;
	//alert(dtStr);&lt;br /&gt;
	//alert(nicename);&lt;br /&gt;
	var daysInMonth;&lt;br /&gt;
	var pos1,pos2;&lt;br /&gt;
	var strDay,strMonth,strYear;&lt;br /&gt;
	var month, day, year;&lt;br /&gt;
	var normalize = false;&lt;br /&gt;
	var normalizedDate;			&lt;br /&gt;
    var datatype;&lt;br /&gt;
    &lt;br /&gt;
    if (dateField) {&lt;br /&gt;
        datatype=dateField.getAttribute(&amp;#039;datatype&amp;#039;);&lt;br /&gt;
        if (!datatype || datatype==&amp;#039;&amp;#039;) datatype=&amp;quot;date&amp;quot;;        &lt;br /&gt;
    } else {&lt;br /&gt;
        datatype=&amp;quot;date&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
	daysInMonth = DaysArray(12)&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	if (!dtStr)&lt;br /&gt;
		return true;&lt;br /&gt;
	&lt;br /&gt;
	pos1=dtStr.indexOf(dtCh)	&lt;br /&gt;
	if (pos1 &amp;gt;= 0) {&lt;br /&gt;
		pos2=dtStr.indexOf(dtCh,pos1+1)&lt;br /&gt;
		if (pos2 == -1) {&lt;br /&gt;
			if (doAlert)&lt;br /&gt;
				alert(nicename + &amp;quot;: kuupĆ¤eva formaat peab olema : pp.kk.aaaa&amp;quot;)&lt;br /&gt;
			return false		&lt;br /&gt;
		}&lt;br /&gt;
			&lt;br /&gt;
		strDay =dtStr.substring(0,pos1);&lt;br /&gt;
		strMonth=dtStr.substring(pos1+1,pos2);&lt;br /&gt;
		strYear=dtStr.substring(pos2+1);&lt;br /&gt;
		&lt;br /&gt;
		if (strYear.length != 4 || strDay.length != 2 || strMonth.length != 2)&lt;br /&gt;
			normalize = true;&lt;br /&gt;
		&lt;br /&gt;
	} else if (dtStr.length == 6 || dtStr.length == 8) {&lt;br /&gt;
			normalize = true;&lt;br /&gt;
			strDay  = dtStr.substring(0,2);&lt;br /&gt;
			strMonth =dtStr.substring(2,4);&lt;br /&gt;
			if (dtStr.length == 8)&lt;br /&gt;
				strYear = dtStr.substring(4,8);&lt;br /&gt;
			else &lt;br /&gt;
				strYear =  dtStr.substring(4,6);&lt;br /&gt;
	} else {&lt;br /&gt;
		if (doAlert)&lt;br /&gt;
			alert(nicename + &amp;quot;: kuupĆ¤eva formaat peab olemaa : pp.kk.aaaa&amp;quot;);&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
		&lt;br /&gt;
	var today = new Date();&lt;br /&gt;
	var thisYear = today.getFullYear();&lt;br /&gt;
	&lt;br /&gt;
	strYr = strYear;&lt;br /&gt;
	&lt;br /&gt;
	month = parseInt(strMonth, 10);&lt;br /&gt;
	day = parseInt(strDay, 10);&lt;br /&gt;
	year = parseInt(strYear, 10);&lt;br /&gt;
&lt;br /&gt;
	if (strMonth.length&amp;lt;1 || month&amp;lt;1 || month&amp;gt;12){&lt;br /&gt;
		if (doAlert)&lt;br /&gt;
			alert(nicename + &amp;quot;: kuu peab olema 1...12 aga on &amp;quot; + strMonth);&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	if (strDay.length&amp;lt;1 || day&amp;lt;1 || day&amp;gt;31 || (month==2 &amp;amp;&amp;amp; day&amp;gt;daysInFebruary(year)) || day &amp;gt; daysInMonth[month]){&lt;br /&gt;
		if (doAlert)&lt;br /&gt;
			alert(nicename + &amp;quot;: pĆ¤ev ei vasta kuu pĆ¤evade arvule&amp;quot;);&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	if (year &amp;lt; 100) {&lt;br /&gt;
		if (datatype==&amp;#039;nopastdate&amp;#039; || (year &amp;lt; (thisYear - 2000) + 10))&lt;br /&gt;
			year = 2000 + year;&lt;br /&gt;
		else&lt;br /&gt;
			year = 1900 + year;	&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (year &amp;lt; minYear || year &amp;gt; maxYear){&lt;br /&gt;
		if (doAlert)&lt;br /&gt;
			alert(nicename + &amp;quot;: aasta peab olema vahemikus &amp;quot;+minYear+&amp;quot; kuni &amp;quot;+maxYear)&lt;br /&gt;
		return false&lt;br /&gt;
	}&lt;br /&gt;
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){&lt;br /&gt;
		if (doAlert)&lt;br /&gt;
			alert(nicename + &amp;quot;: sisesta Ćµige kuupĆ¤ev&amp;quot;)&lt;br /&gt;
		return false;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if  (normalize) {	// if datefield given then will normalize&lt;br /&gt;
		normalizedDate = &amp;quot;&amp;quot;;&lt;br /&gt;
		if (day &amp;lt; 10)&lt;br /&gt;
			normalizedDate = &amp;quot;0&amp;quot;;&lt;br /&gt;
		normalizedDate = normalizedDate + day + &amp;quot;.&amp;quot;;&lt;br /&gt;
		if (month &amp;lt; 10)&lt;br /&gt;
			normalizedDate += &amp;quot;0&amp;quot;;&lt;br /&gt;
		normalizedDate = normalizedDate + month + &amp;quot;.&amp;quot; + year;&lt;br /&gt;
		&lt;br /&gt;
		if (dateField)&lt;br /&gt;
			dateField.value = normalizedDate;&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
		return normalizedDate;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return dtStr2&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function checkDate2(day, month, year) {&lt;br /&gt;
	var d = parseInt(day, 10);&lt;br /&gt;
	var m = parseInt(month, 10);&lt;br /&gt;
	var y = parseInt(year, 10);&lt;br /&gt;
	&lt;br /&gt;
	if (isNaN(d) || isNaN(m) || isNaN(y))&lt;br /&gt;
		return false;&lt;br /&gt;
	&lt;br /&gt;
	if (m &amp;lt; 1 || m &amp;gt; 12)&lt;br /&gt;
		return false;&lt;br /&gt;
	&lt;br /&gt;
	return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function is_valid_range(aasta1,kuu1,paev1,aasta2,kuu2,paev2)&lt;br /&gt;
// Kontrollida, et 1. kuupaev oleks varasem kui 2. kuupaev.&lt;br /&gt;
// Teame, et kuupaevad ise on korrektsed (is_valid_date() on true).&lt;br /&gt;
{&lt;br /&gt;
  if (aasta1 &amp;lt; aasta2) return true;&lt;br /&gt;
  if (aasta1 &amp;gt; aasta2) return false;&lt;br /&gt;
  // Aastad on samad&lt;br /&gt;
  // Kui siin parseInt ei pane, siis vordleb kui stringe ja 2 &amp;gt; 11 !&lt;br /&gt;
  if (parseInt(kuu1) &amp;lt; parseInt(kuu2)) return true;&lt;br /&gt;
  if (parseInt(kuu1) &amp;gt; parseInt(kuu2)) return false;&lt;br /&gt;
  // Kuud on samad&lt;br /&gt;
  if (parseInt(paev1) &amp;lt; parseInt(paev2)) return true;&lt;br /&gt;
  return false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function is_valid_fromto(kuupaev1, kuupaev2)&lt;br /&gt;
// Kontrollida, et 1. kuupaev oleks varasem voi sama kui 2. kuupaev.&lt;br /&gt;
// Teame, et kuupaevad ise on korrektsed (is_valid_date() on true).&lt;br /&gt;
{&lt;br /&gt;
  arr    = kuupaev1.split(&amp;#039;.&amp;#039;);&lt;br /&gt;
  paev1  = parseInt(arr[0],10);&lt;br /&gt;
  kuu1   = parseInt(arr[1],10);&lt;br /&gt;
  aasta1 = parseInt(arr[2],10);&lt;br /&gt;
&lt;br /&gt;
  arr    = kuupaev2.split(&amp;#039;.&amp;#039;);&lt;br /&gt;
  paev2  = parseInt(arr[0],10);&lt;br /&gt;
  kuu2   = parseInt(arr[1],10);&lt;br /&gt;
  aasta2 = parseInt(arr[2],10);&lt;br /&gt;
&lt;br /&gt;
  return is_valid_range(aasta1,kuu1,paev1,aasta2,kuu2,paev2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function keyhandler(e, keycodes, func) {&lt;br /&gt;
    // allows you to easily call some function&lt;br /&gt;
    // when one of the keys in the keycodes list is pressed&lt;br /&gt;
    // keycodes list should be string consisting of keynumbers separated by ,&lt;br /&gt;
    // i.e. &amp;quot;38,12&amp;quot;&lt;br /&gt;
    // func should be a callable function&lt;br /&gt;
    // e is a event&lt;br /&gt;
    if(window.event) { // IE&lt;br /&gt;
      c = e.keyCode&lt;br /&gt;
    } else if(e.which) {// Netscape/Firefox/Opera&lt;br /&gt;
      c = e.which&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var keyarray = keycodes.split(&amp;quot;,&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    for (i=0; i&amp;lt;keyarray.length; i++) {&lt;br /&gt;
        if (c == parseInt(keyarray[i], 10)) {&lt;br /&gt;
            func();&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* kontrollib, kas antud aasta, kuu ja pĆ¤ev sobivad kokku */&lt;br /&gt;
function kas_on_kpv(aasta,kuu,paev) {&lt;br /&gt;
  var kuud = new Array(31,29,31,30,31,30,31,31,30,31,30,31);&lt;br /&gt;
  rc = true;&lt;br /&gt;
  if(kuu != null &amp;amp;&amp;amp; !isNaN(kuu))&lt;br /&gt;
        rc &amp;amp;= kuu &amp;gt; 0 &amp;amp;&amp;amp; kuu &amp;lt;= 12;&lt;br /&gt;
  if(paev != null &amp;amp;&amp;amp; !isNaN(paev))&lt;br /&gt;
  {&lt;br /&gt;
        rc &amp;amp;= paev &amp;gt; 0 &amp;amp;&amp;amp; paev &amp;lt;= 31;&lt;br /&gt;
        if(kuu != null &amp;amp;&amp;amp; !isNaN(kuu))&lt;br /&gt;
        {&lt;br /&gt;
                rc &amp;amp;= paev &amp;lt;= kuud[kuu-1];&lt;br /&gt;
                if(paev == 29 &amp;amp;&amp;amp; kuu == 2)&lt;br /&gt;
                        rc &amp;amp;= (aasta % 4 == 0 &amp;amp;&amp;amp; (aasta % 100 != 0 || aasta % 400 == 0)); // liigaasta&lt;br /&gt;
        }&lt;br /&gt;
  }&lt;br /&gt;
  if(aasta != null &amp;amp;&amp;amp; !isNaN(aasta))&lt;br /&gt;
  {&lt;br /&gt;
        rc &amp;amp;= aasta &amp;gt;= 1000 &amp;amp;&amp;amp; aasta &amp;lt;= 9999;&lt;br /&gt;
  }&lt;br /&gt;
  return rc;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function isoDateFromEstonian(vestDate) {	// This function assumes normalized  estonian date mm.dd.yyyy, 10 characters&lt;br /&gt;
    if (!vestDate || vestDate==&amp;quot;&amp;quot; || vestDate.length&amp;lt;10) return &amp;quot;&amp;quot;;&lt;br /&gt;
    else return vestDate.substring(6,10) + &amp;quot;-&amp;quot; + vestDate.substring(3,5) + &amp;quot;-&amp;quot; + vestDate.substring(0,2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function estonianDateFromISO(visoDate) {	// This function assumes normalized  iso date 10 characters&lt;br /&gt;
    if (!visoDate || visoDate==&amp;quot;&amp;quot; || visoDate.length&amp;lt;10) return &amp;quot;&amp;quot;;&lt;br /&gt;
	else return visoDate.substring(8,10) + &amp;quot;.&amp;quot; + visoDate.substring(5,7) + &amp;quot;.&amp;quot; + visoDate.substring(0,4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function isoDateDiffInDays(isoDate1, isoDate2) {&lt;br /&gt;
	//alert(parseInt(isoDate1.substring(0,4))-1900);&lt;br /&gt;
	var utc1 = Date.UTC(parseInt(isoDate1.substring(0,4), 10)-1900, parseInt(isoDate1.substring(5,7), 10) -1, parseInt(isoDate1.substring(8,10), 10), 1);&lt;br /&gt;
	var utc2 = Date.UTC(parseInt(isoDate2.substring(0,4), 10)-1900, parseInt(isoDate2.substring(5,7), 10) -1, parseInt(isoDate2.substring(8,10), 10), 1 );	&lt;br /&gt;
	//alert(utc1 + &amp;quot;  &amp;quot; + utc2);	&lt;br /&gt;
	var diff =  ((utc1 - utc2) / 1000) / 3600 / 24 ;	&lt;br /&gt;
	var res = parseInt(diff.toString(), 10); &lt;br /&gt;
	//alert(res);	&lt;br /&gt;
	return res;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function isoCurrentDate() {&lt;br /&gt;
	var today = new Date();&lt;br /&gt;
	var year = today.getYear();&lt;br /&gt;
	var month = today.getMonth() + 1;&lt;br /&gt;
	var day = today.getDate();&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	if (year &amp;lt; 1900)&lt;br /&gt;
		year += 1900;&lt;br /&gt;
	&lt;br /&gt;
	var isoDate = year + &amp;quot;-&amp;quot;;&lt;br /&gt;
	if (month &amp;lt; 10)&lt;br /&gt;
			isoDate += &amp;quot;0&amp;quot;;&lt;br /&gt;
	isoDate += month + &amp;quot;-&amp;quot;;&lt;br /&gt;
	if (day &amp;lt; 10)&lt;br /&gt;
		isoDate += &amp;quot;0&amp;quot;;&lt;br /&gt;
	isoDate +=   day;&lt;br /&gt;
	return isoDate;&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function estonianCurrentDate() {&lt;br /&gt;
	return estonianDateFromISO(isoCurrentDate());&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
function ageFromISOBirthDate(birthdate) {	// assume correct iso birthdate&lt;br /&gt;
	var today = new Date();&lt;br /&gt;
	var tyear = today.getYear();&lt;br /&gt;
	var tmonth = today.getMonth() + 1;&lt;br /&gt;
	var tday = today.getDate();&lt;br /&gt;
&lt;br /&gt;
	if (tyear &amp;lt; 1900)&lt;br /&gt;
		tyear += 1900;&lt;br /&gt;
&lt;br /&gt;
	var byear = parseInt(birthdate.substring(0,4), 10);&lt;br /&gt;
	var bmonth = parseInt(birthdate.substring(5,7), 10);&lt;br /&gt;
	var bday = parseInt(birthdate.substring(8,10), 10);&lt;br /&gt;
	&lt;br /&gt;
	var age = tyear - byear - 1;&lt;br /&gt;
	&lt;br /&gt;
	if (tmonth &amp;gt; bmonth || (tmonth == bmonth &amp;amp;&amp;amp; tday &amp;gt;= bday))&lt;br /&gt;
		age++;&lt;br /&gt;
&lt;br /&gt;
	return age;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
</feed>