/****** COMMON ******/

function RequestData(url, fn, param, errFn, retry) {
  if (document.getElementById("cache") != null) return;

  var xmlhttp = null;
  if (window.XMLHttpRequest) {
    // code for Mozilla, etc.
    xmlhttp = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    // code for IE
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (xmlhttp != null) {
    xmlhttp.onreadystatechange = function() {
      if(xmlhttp.readyState == 4) {
        if(xmlhttp.status == 200) {
          fn(xmlhttp, param);
        } else if (retry > 0) {
          RequestData(url, fn, param, errFn, retry - 1);
        } else if (errFn) {
          errFn('queryFailure', param);
        } else {
          alert('Päring ebaõnnestus');
        }
      }
    };
    xmlhttp.open("GET", url, true);
    xmlhttp.send(null);
  } else if (errFn) {
    errFn('XMLHttpFailure', param);
  } else {
    alert('Teie brauser ei toeta XMLHTTP-d');
  }
}

function escape_utf8(wide) {
  var c, s;
  var enc = "";
  var i = 0;
  while(i < wide.length) {
    c = wide.charCodeAt(i++);
    // handle UTF-16 surrogates
    if (c >= 0xDC00 && c < 0xE000) continue;
    if (c >= 0xD800 && c < 0xDC00) {
      if (i >= wide.length) continue;
      s = wide.charCodeAt(i++);
      if (s < 0xDC00 || c >= 0xDE00) continue;
      c = ((c - 0xD800) << 10) + (s - 0xDC00) + 0x10000;
    }
    // output value
    if (c < 0x80) enc += String.fromCharCode(c);
    else if (c < 0x800) enc += String.fromCharCode(0xC0 + (c >> 6), 0x80 + (c & 0x3F));
    else if (c < 0x10000) enc += String.fromCharCode(0xE0 + (c >> 12), 0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));
    else enc += String.fromCharCode(0xF0 + (c >> 18), 0x80 + (c >> 12 & 0x3F), 0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));
  }
  return escape(enc);
}

// Example...
// RequestData(url+'id='+xId+'&amp;val='+escape_utf8(xVal), function(xmlhttp, param){processData(xmlhttp.responseText, param)}, xId, function(errMsg, param){processError(errMsg, param)});




/****** Search List Of Valuest ******/

var lovQuerySchedule = new Array();
var lovboxDyn = new Array();
var lovboxStat = new Array();

function lovScheduleQuery(url, lovname, regselId, lovparam, val, noEmptyWarn) {
  if (noEmptyWarn)
    noEmptyWarn=true;
   else
    noEmptyWarn=false;

  // Kui kasutaja trükib kiiremini, kui üks täht 500 ms jooksul, siis päring on käivitatud ainult pärast trükkimise lõpetamist.
  if (lovQuerySchedule['regselId'])
    clearTimeout(lovQuerySchedule['regselId']);

  lovQuerySchedule['regselId'] = setTimeout("lovScheduleCheck('"+url+"','"+lovname+"','"+regselId+"','"+lovparam+"','"+escape_utf8(val)+"',"+noEmptyWarn+")", 500);
}

function lovScheduleCheck(url, lovname, regselId, lovparam, val, noEmptyWarn) {
  lovQuery(url, lovname, regselId, lovparam, val, noEmptyWarn);
}

function lovQuery(url, lovname, regselId, lovparam, val, noEmptyWarn) {
  var paramset = new Array();
  paramset.regselId = regselId;
  paramset.noEmptyWarn = noEmptyWarn;
  RequestData(url+'lovname='+lovname+'&amp;lovid='+regselId+'&amp;lovparam='+lovparam+'&amp;expr='+val, function(xmlhttp, param){lovProcessResult(xmlhttp.responseText, param)}, paramset);
}

function lovProcessResult(data, paramset) {
  document.getElementById(paramset.regselId).value="";
  if (data.match(/^OK/)) {
    var result = data.replace(/^OK\s*|\s*$/g,"");
    var div = document.getElementById(paramset.regselId+'_div');
    if (result.length > 0 && paramset.noEmptyWarn) {
      div.innerHTML = '<a href="#" title="Sulge" onclick="lovClose(\''+paramset.regselId+'\'); return false;" style="float: right; font-weight: bold;">x<\/a><br style="clear: both;">'+result;
      div.style.display='block';
    } else if (result.length > 0) {
      div.innerHTML = '<a href="#" title="Sulge ja tühjenda" onclick="lovClear(\''+paramset.regselId+'\'); return false;" style="float: right; font-weight: bold;">x<\/a><br style="clear: both;">'+result;
      div.style.display='block';
    } else if (!paramset.noEmptyWarn) {
      div.innerHTML = '<a href="#" title="Sulge ja tühjenda" onclick="lovClear(\''+paramset.regselId+'\'); return false;" style="float: right; font-weight: bold;">x<\/a><br><p style="clear: both;">Vasted puuduvad<\/p>';
      div.style.display='block';
    } else {
      div.style.display='none';
    }
  } else {
    alert('Viga loetelu andmete pärimisel!');
  }
}

function lovSelectItem(regselId, cod, val) {
  var regsel = document.getElementById(regselId);
  var sel = document.getElementById(regselId+'_nimetus');
  var div = document.getElementById(regselId+'_div');
  regsel.value = cod;
  sel.value = val;
  div.style.display = "none";
}

function lovClear(regselId) {
  var regsel = document.getElementById(regselId);
  var sel = document.getElementById(regselId+'_nimetus');
  var div = document.getElementById(regselId+'_div');
  regsel.value = "";
  sel.value = "";
  div.style.display = "none";
}

function lovClose(regselId) {
  var regsel = document.getElementById(regselId);
  var div = document.getElementById(regselId+'_div');
  regsel.value = "";
  div.style.display = "none";
}

function lovGetLov(url, regselId) {
  var div = document.getElementById(regselId+'_div');
  if (lovboxStat[regselId]) {
    var lovbox = document.getElementById(regselId+'_lovbox');
    if (!lovboxDyn[regselId])
      lovboxDyn[regselId]=lovbox.innerHTML;
    lovbox.innerHTML = lovboxStat[regselId];
    div.style.display = 'none';
  } else {
    div.innerHTML = '<p style="color: green;">Laen nimekirja...</p>';
    div.style.display = 'block';
    RequestData(url, function(xmlhttp, param){lovProcessGetLov(xmlhttp.responseText, param)}, regselId);
  }  
}

function lovProcessGetLov(data, regselId) {
  document.getElementById(regselId).value="";
  if (data.match(/^OK/)) {
    var lovbox = document.getElementById(regselId+'_lovbox');
    if (!lovboxDyn[regselId])
      lovboxDyn[regselId]=lovbox.innerHTML;
    lovbox.innerHTML = data.replace(/^OK\s*|\s*$/g,"") + '<a href="#" onClick="lovRestore(\''+regselId+'\'); return false;"><img alt="Otsi" src="/gfx/luup.gif"></a>';
  } else {
    var div = document.getElementById(regselId+'_div');
    div.style.display = "none";
    alert('Viga nimekirja laadimisel!');
  }
}

function lovRestore(regselId) {
    var lovbox = document.getElementById(regselId+'_lovbox');
    lovboxStat[regselId]=lovbox.innerHTML;
    lovbox.innerHTML = lovboxDyn[regselId];
    var div = document.getElementById(regselId+'_div');
    div.style.display = 'none';
}


/****** Dynamic menu ******/

function menuCheck(url, tableId) {
  var t = document.getElementById(tableId);
  var l = document.body.lang;
  var s,a;
  if (t.style.display != "none") {
    t.style.display = "none";
    menuCloseQuery(url, tableId);
    s = "close";
  } else if (t.rows[0] && t.rows[0].className!='dummy') {
    t.style.display = "";
    menuOpenQuery(url, tableId);
    s = "open";
  } else {
    menuGetQuery(url, tableId);
    s = "open";
  }
  if (s == "open")
    {
/*    document.getElementById(tableId+"_image").src="/gfx/gfx2/icons/miinus.gif"; */
    document.getElementById(tableId+"_image").src="/gfx/facelift/menu_minus.png";
    if (l == "ru") {a="[закрыть]";}
    else if (l == "en") {a="[close]";}
    else {a="[sulgeda]";}
    }
  else
    {
/*    document.getElementById(tableId+"_image").src="/gfx/gfx2/icons/pluss.gif"; */
    document.getElementById(tableId+"_image").src="/gfx/facelift/menu_plus.png";
    if (l == "ru") {a="[открыть]";}
    else if (l == "en") {a="[open]";}
    else {a="[avada]";}
    }
  menuAction(tableId, s);
  document.getElementById(tableId+"_image").alt=a;
}

function menuAction(tableId, action) {
	var i, el, esileht;
	if (eval('typeof('+tableId+'_status_handler)') == 'function') eval(tableId+'_status_handler("'+action+'")');
	if (typeof(menu_status_handler) == 'function') menu_status_handler(tableId, action);
	el = document.getElementById(tableId+"_action0");
	eb = document.getElementById("esilehe_banner");
	cnt_el = document.getElementById("full_menu_descr_cnt");
	if (el != null && action == "close") {
		el.style.display = "none";
		if (eb != null && cnt_el != null) {
			cnt_el.value--;
			if (cnt_el.value == 0) eb.style.display = "";
		}
	} else if (el != null && action == "open") {
		el.style.display = "";
		if (eb != null && cnt_el != null) {
			eb.style.display = "none";
			cnt_el.value++;
		}
	}
}

function menuCloseQuery(url, tableId) {
  RequestData(url+'&action=close', function(xmlhttp, param){menuCloseResult(xmlhttp.responseText, param)}, tableId);
}

function menuOpenQuery(url, tableId) {
  RequestData(url+'&action=open', function(xmlhttp, param){menuOpenResult(xmlhttp.responseText, param)}, tableId);
}

function menuGetQuery(url, tableId) {
  RequestData(url+'&action=get', function(xmlhttp, param){menuGetResult(xmlhttp.responseText, param)}, tableId);
}

function menuCloseResult(data, tableId) {
  if (data.replace(/^\s*|\s*$/g,"") != "OK") {
    alert('Viga menüü seadete salvestamisel!');
  }
}

function menuOpenResult(data, tableId) {
  if (data.replace(/^\s*|\s*$/g,"") != "OK") {
    alert('Viga menüü seadete salvestamisel!');
  }
}

function menuGetResult(data, tableId) {
  var t = document.getElementById(tableId);
  if (!data.match(/^\s*OK\s*/)) {
    alert('Viga menüü andmete pärimisel!');
  } else if (!t.rows[0] || t.rows[0].className=='dummy') {
  	if (t.rows[0].className=='dummy') t.deleteRow(0);
    data = data.replace(/^\s*OK\s*/,"");
    var r=t.insertRow(0);
    var c=r.insertCell(0);
    c.innerHTML = '<ul>'+data+'</ul>';
    t.style.display = "";
  }
}



/****** Session check ******/

var sessionTimeout = null;
var sessionUrl = null;
var sessionUrlParam = null;
var sessionDivId = null;
var sessionOnScroll = null;
var sessionScheduleId = 0;
var sessionMsg = false;
var sessionMsgFormatAlgus = "<div style=\"text-align: center; clear: both; color: #FF3333; font-size: 12pt; font-weight: bold; font-family: Arial, Helvetica, sans-serif;\">";
var sessionMsgFormatLopp = "<\/div>";


function sessionScheduleCheck(url, urlParam, divId, timeout) {
  if (url && urlParam && divId && timeout) {
    sessionUrl = url;
    sessionUrlParam = urlParam;
    sessionDivId = divId;
    sessionTimeout = timeout;
  }

  var checkInterval;
  if (sessionTimeout > 300) {
    checkInterval = (sessionTimeout - 300 + 1) * 1000;
  } else {
    checkInterval = (sessionTimeout - 0 + 1) * 1000;
  }
  
  if (checkInterval < 15000) checkInterval = 15000;

  setTimeout("sessionCheck("+sessionScheduleId+")", checkInterval);
}

function sessionCheck(scheduleId, urlParam) {
  if (!urlParam) urlParam=sessionUrlParam;
  if (sessionTimeout != null && sessionScheduleId == scheduleId) {
    RequestData(sessionUrl+urlParam, function(xmlhttp, param){sessionCheckResult(xmlhttp.responseText, param)}, sessionDivId, function(errMsg, param){sessionCheckError(errMsg, param)}, 3);
  }
  if (sessionTimeout == 0) {
    sessionTimeout = null;
  }
}

function sessionCheckResult(responseText, divId) {
  var div = document.getElementById(divId);
  if (responseText.match(/^OK[\n\r]*/i)) {
    // Sessioon kehtib
    sessionTimeout = responseText.replace(/^OK[\n\r]*/i, "");
    if (sessionTimeout < 300) {
      div.innerHTML = sessionMsgFormatAlgus+"Teie sessioon aegub 5 minuti pärast!"+sessionMsgFormatLopp
        + '<a href="#" class="bold" onclick=\'sessionMsgBoxClose(); sessionCheck(++sessionScheduleId, "refresh"); return false;\'>Pikenda sessiooni</a>';
      sessionMsgBox(divId, 50, 50);
    } else {
      sessionMsgBoxClose();
    }
    sessionScheduleCheck();
  } else if (responseText.match(/^ERR/i)) {
    // Sessioon on aegunud
    sessionTimeout = null;
    div.innerHTML = sessionMsgFormatAlgus+"Teie sessioon on aegunud!"+sessionMsgFormatLopp
      + '<p style="text-align: left;">Kui Teil on pooleli andmete sisestamine ja soovite sisestamist jätkata, peaksite <a href="portaal.sess_restore" target="_blank" class="bold">uuesti sisenema teises brauseri aknas<\/a>, seejärel sisenemiseks kasutatud akna sulgema ja vajutama lingile <a href="#" class="bold" onclick=\'sessionMsgBoxClose(); sessionTimeout = 0; sessionCheck(++sessionScheduleId, "refresh"); return false;\'>kontrolli sessiooni olemasolu<\/a>. Edukat sisenemist näitab selle teate kadumine.<\/p>'
      + '<p style="text-align: left;">Kui Te ei sisesta hetkel andmeid või soovite uuesti siseneda samas brauseri aknas sisestatavate andmete säilitamiseta, palume vajutada <a href="'+encodeURI(window.location)+'" class="bold">siia<\/a>.<\/p>'
      + '<p style="text-align: left;">Kui soovite portaali kasutamist lõpetada, vajutage palun <a href="/index.php?logout=logout" class="bold" onclick="return confirm(\'Kas olete kindel, et soovite portaalist lahkuda?\')">siia<\/a>.<\/p>';
    sessionMsgBox(divId, 50, 50);
  } else {
    sessionCheckError('dataFailure', divId);
  }
}

function sessionCheckError(errMsg, divId) {
  var div = document.getElementById(divId);
  var msg = sessionMsgFormatAlgus;
  if (errMsg == "dataFailure") {
    msg += "Viga serveri vastuses!";
  } else if (errMsg == "queryFailure") {
    msg += "Server ei ole ajutiselt saadaval. Palun proovige seda lehekülge mõne aja pärast värskendada!";
  } else if (errMsg == "XMLHttpFailure") {
    msg += "Teie brauser ei toeta XMLHTTP protokolli. Palun värskendage seda lehekülge!";
  } else {
    msg += errMsg;
  }
  msg += sessionMsgFormatLopp;
  div.innerHTML = msg;
  sessionMsgBox(divId, 50, 50);
  sessionTimeout = null;
}

function sessionMsgBox(boxId, xFixedPos, yFixedPos) {
  var yPos = 0;
  var xPos = 0;
  var box = document.getElementById(boxId);

  if (window.pageYOffset && window.pageXOffset ) {
    yPos = window.pageYOffset;
    xPos = window.pageXOffset;
  } else if (document.documentElement && document.documentElement.scrollTop && document.documentElement.scrollLeft) {
    yPos = document.documentElement.scrollTop;
    xPos = document.documentElement.scrollLeft;
  } else if (document.body) {
    yPos = document.body.scrollTop;
    xPos = document.body.scrollLeft;
  }

  box.style.top = yPos + yFixedPos;
  box.style.left = xPos + xFixedPos;
  box.style.display = "block";

  if (sessionMsg == false) {
    sessionOnScroll = window.onscroll;
    window.onscroll = function() {sessionMsgBox(boxId, xFixedPos, yFixedPos);}
  }
  sessionMsg = true;
}

function sessionMsgBoxClose() {
  document.getElementById(sessionDivId).style.display="none";
  if (sessionMsg == true) {
    window.onscroll = sessionOnScroll;
    sessionOnScroll = null;
    sessionMsg = false;
  }
}

function sessionXMLHttpCheck(url, divId) {
  RequestData(url, function(xmlhttp, param){ /* Ignore Results */ }, divId, function(errMsg, param){sessionCheckError(errMsg, param)}, 3);
}



/****** Font size changer ******/
fontsizeCssIds = new Array('small_css', 'normal_css', 'big_css');
fontsizeCssFiles = new Array();
fontsizeCssFiles['small_css'] = '/css/rp_1.css';
fontsizeCssFiles['normal_css'] = '/css/rp_2.css';
fontsizeCssFiles['big_css'] = '/css/rp_3.css';

function fontsizeSetSize(size) {
  var bf = document.getElementById('bigger_font');
  var sf = document.getElementById('smaller_font');
  if (size == '+' && sf.style.display != "none") {
    fontsizeSetCss(fontsizeCssIds[2]);
    bf.style.display = "none";
    fontsizeSaveSize('3');
  } else if (size == '-' && bf.style.display != "none") {
    fontsizeSetCss(fontsizeCssIds[0]);
    sf.style.display = "none";
    fontsizeSaveSize('1');
  } else {
    fontsizeSetCss(fontsizeCssIds[1]);
    bf.style.display = "";
    sf.style.display = "";
    fontsizeSaveSize('2');
  }
}

function fontsizeSetSize2(size) {
  var bf = document.getElementById('bigger_font');
  var nf = document.getElementById('normal_font');
  var sf = document.getElementById('smaller_font');
  if (size == '3') {
    fontsizeSetCss(fontsizeCssIds[2]);
    fontsizeSaveSize('3');
    bf.className="big selected";
    nf.className="normal";
    sf.className="small";
  } else if (size == '1') {
    fontsizeSetCss(fontsizeCssIds[0]);
    fontsizeSaveSize('1');
    bf.className="big";
    nf.className="normal";
    sf.className="small  selected";
  } else {
    fontsizeSetCss(fontsizeCssIds[1]);
    fontsizeSaveSize('2');
    bf.className="big";
    nf.className="normal selected";
    sf.className="small";
  }
}

function fontsizeSetCss(cssId) {
  var css = document.getElementById(cssId);
  if (css) {
    css.disabled = false;
  } else {
    var headID = document.getElementsByTagName("head")[0];
    var cssNode = document.createElement('link');
    cssNode.id = cssId;
    cssNode.type = 'text/css';
    cssNode.rel = 'stylesheet';
    cssNode.href = fontsizeCssFiles[cssId];
    cssNode.media = 'all';
    headID.appendChild(cssNode);
  }
  for(i in fontsizeCssIds) {
    css = document.getElementById(fontsizeCssIds[i]);
    if (cssId != fontsizeCssIds[i] && css) css.disabled = true;
  }
}

function fontsizeSaveSize(size) {
  RequestData('/portaal/portaal.xmlhttp_set_size?'+size, function(xmlhttp, param){fontsizeSaveSizeResult(xmlhttp.responseText)}, '');
}

function fontsizeSaveSizeResult(data) {
  if (data.replace(/^\s*|\s*$/g,"") != "OK") {
    alert('Viga fondi suuruse seadete salvestamisel!');
  }
}



/****** Toggle alt path ******/
function altPathToggle() {
  if (document.getElementById("alt_path") != null) {
    if (document.getElementById("alt_path").style.display == "none") {
      document.getElementById("alt_path").style.display = "";
      if (document.getElementById("alt_path_visible") != null) document.getElementById("alt_path_visible").value = "y";
      altPathSave('y');
    } else {
      document.getElementById("alt_path").style.display = "none";
      if (document.getElementById("alt_path_visible") != null) document.getElementById("alt_path_visible").value = "n";
      altPathSave('n');
    }
  }
}

function altPathSave(isOpen) {
  RequestData('/portaal/portaal.xmlhttp_alt_path?'+isOpen, function(xmlhttp, param){altPathSaveResult(xmlhttp.responseText)}, '');
}

function altPathSaveResult(data) {
  if (data.replace(/^\s*|\s*$/g,"") != "OK") {
    alert('Viga seadete salvestamisel!');
  }
}



/****** Other... ******/

function print_preview(pp) {
  if (pp) {
    if (document.getElementById("header") != null) document.getElementById("header").style.display = "none";
    if (document.getElementById("header2") != null) document.getElementById("header2").style.display = "none";
    if (document.getElementById("header3") != null) document.getElementById("header3").style.display = "none";
    if (document.getElementById("menu-left") != null) document.getElementById("menu-left").style.display = "none";
    if (document.getElementById("menu-right") != null) document.getElementById("menu-right").style.display = "none";
    if (document.getElementById("footer") != null) document.getElementById("footer").style.display = "none";
    if (document.getElementById("alt_path") != null) document.getElementById("alt_path").style.display = "none";
    if (document.getElementById("header4") != null) document.getElementById("header4").style.display = "";
  } else {
    if (document.getElementById("header") != null) document.getElementById("header").style.display = "";
    if (document.getElementById("header2") != null) document.getElementById("header2").style.display = "";
    if (document.getElementById("header3") != null) document.getElementById("header3").style.display = "";
    if (document.getElementById("menu-left") != null) document.getElementById("menu-left").style.display = "";
    if (document.getElementById("menu-right") != null) document.getElementById("menu-right").style.display = "";
    if (document.getElementById("footer") != null) document.getElementById("footer").style.display = "";
    if (document.getElementById("alt_path") != null) {
	    if (document.getElementById("alt_path_visible") != null && document.getElementById("alt_path_visible").value == "y") {
					document.getElementById("alt_path").style.display = "";
			} else {
					document.getElementById("alt_path").style.display = "none";
			}
  	}
    if (document.getElementById("header4") != null) document.getElementById("header4").style.display = "none";
  }
  setTimeout("lipikud_redraw()", 1);
}

function lipikud_redraw() {
  if (typeof(window['isIE']) != "undefined" && isIE) {
    var b, i;
    var re = new RegExp('lipikud');
    for (i=0; (b = document.getElementsByTagName('ul')[i]); i++) {
      if (re.test(b.className)) {
        b.style.display = "none";
        b.style.display = "";
      }
    }
  }
}

function isEmpty(str) {
	for (var intLoop = 0; intLoop < str.length; intLoop++)
		if (" " != str.charAt(intLoop)) return false;
	return true;
}

function checkRequired(f) {
	if (document.xotsing) return true;
	//for (var intLoop = 0; intLoop<f.elements.length; intLoop++) {
	for (var intLoop = 0; intLoop<f.length; intLoop++) {

    // Fixing strange IE bug
		if ( (null!=f.elements[intLoop].className.match("required") || null!=f.elements[intLoop].className.match(" numeric")
          || null!=f.elements[intLoop].className.match("nonumeric")) && false==f.elements[intLoop].disabled ) {
      var el = f.elements[intLoop];
      if (el.id) {
        var el2 = document.getElementById(el.id);
        if (el2.value){
          el.value=el2.value;
        }
      }
		}

		//if (null!=f.elements[intLoop].getAttribute("required") && false==f.elements[intLoop].disabled) {
		if (null!=f.elements[intLoop].className.match("required") && false==f.elements[intLoop].disabled) {
			if (isEmpty(f.elements[intLoop].value)) {
				//alert(f.elements[intLoop].alt+" ei tohi olla tühi!");
				alert(f.elements[intLoop].title+" ei tohi olla tühi!");
				if (!f.elements[intLoop].disabled && !f.elements[intLoop].type=='hidden') {
					f.elements[intLoop].focus();
				}
  			return false;
			}
		}
		//if (null!=f.elements[intLoop].getAttribute("numeric") && false==f.elements[intLoop].disabled) { 
		if (null!=f.elements[intLoop].className.match(" numeric") && false==f.elements[intLoop].disabled) { 
			if (isNaN(f.elements[intLoop].value)) {
				//alert(f.elements[intLoop].alt+" peab olema arv või numbritest koosnev tekst!");
				alert(f.elements[intLoop].title+" peab olema arv või numbritest koosnev tekst!");
				if (!f.elements[intLoop].disabled && !f.elements[intLoop].type=='hidden') {
					f.elements[intLoop].focus();
				}
				return false;
			}
		}
		if (null!=f.elements[intLoop].className.match("nonumeric") && false==f.elements[intLoop].disabled) {
			var lCheckOK,lcheckStr,lCharacter;
			var j;	
			lcheckOK = " ABCDEFGHIJKLMNOPQRSTUVWXYZÕÄÖÜŽŠabcdefghijklmnopqrstuvwxyzõäöüžš-";
			lcheckStr = f.elements[intLoop].value;	
			for (j = 0 ;j<(lcheckStr.length);j++) {
				lCharacter = lcheckStr.substr(j,1);
			  if ( lcheckOK.indexOf(lCharacter) == -1 ) {
					//alert(f.elements[intLoop].alt+" ei tohi sisaldada numbreid!");
					alert(f.elements[intLoop].title+" ei tohi sisaldada numbreid!");
					if (!f.elements[intLoop].disabled && !f.elements[intLoop].type=='hidden') {
						f.elements[intLoop].focus()
					};
					return false;
				}
			}
		}
	}
}

function toggle_file(fId) {
	var f = document.getElementById(fId);
	if (f.disabled) {
		f.disabled=false;
	} else {
		f.disabled=true;
	}
}

function fixDateNr(num) {
  num = ''+num;
  if (num.length == 1) {
    return '0'+num;
  } else {
    return num;
  }  
}

function print_current_time(lang) {
  if (!lang) lang='ee';
  var curtime = new Date();
  var monthName;
  
  switch (lang) {
    case 'ee':
      switch (curtime.getMonth()) {
        case 0: monthName = '. jaanuar '; break
        case 1: monthName = '. veebruar '; break
        case 2: monthName = '. märts '; break
        case 3: monthName = '. aprill '; break
        case 4: monthName = '. mai '; break
        case 5: monthName = '. juuni '; break
        case 6: monthName = '. juuli '; break
        case 7: monthName = '. august '; break
        case 8: monthName = '. september '; break
        case 9: monthName = '. oktober '; break
        case 10: monthName = '. november '; break
        case 11: monthName = '. detsember '; break
      }
      break;
    case 'en':
      switch (curtime.getMonth()) {
        case 0: monthName = '. January '; break
        case 1: monthName = '. February '; break
        case 2: monthName = '. March '; break
        case 3: monthName = '. April '; break
        case 4: monthName = '. May '; break
        case 5: monthName = '. June '; break
        case 6: monthName = '. July '; break
        case 7: monthName = '. August '; break
        case 8: monthName = '. September '; break
        case 9: monthName = '. Oktober '; break
        case 10: monthName = '. November '; break

        case 11: monthName = '. December '; break
      }
      break;
    case 'ru':
      switch (curtime.getMonth()) {
        case 0: monthName = ' января '; break
        case 1: monthName = ' февраля '; break
        case 2: monthName = ' марта '; break
        case 3: monthName = ' апреля '; break
        case 4: monthName = ' мая '; break
        case 5: monthName = ' июня '; break
        case 6: monthName = ' июля '; break
        case 7: monthName = ' августа '; break
        case 8: monthName = ' сентября '; break
        case 9: monthName = ' октября '; break
        case 10: monthName = ' ноября '; break
        case 11: monthName = ' декабря '; break
      }
      break;
  }

  document.write(fixDateNr(curtime.getDate())+monthName+fixDateNr(curtime.getFullYear())+' '+fixDateNr(curtime.getHours())
    +':'+fixDateNr(curtime.getMinutes())+':'+fixDateNr(curtime.getSeconds()));
}



/***********************************************
* Pop-it menu- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
/***********************************************
* AnyLink Drop Down Menu- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

var defaultMenuWidth = "250px"; //set default menu width.
var defaultMenuHeight = "auto"; //set default menu height.
var hideDelay = 300;            //set hide delay length.
var delayhide = new Array();    //stores active delayed hides.

document.write('<div id="popUpBookmark" class="popUp" onClick="hidemenu(\'popUpBookmark\')" onMouseover="clearhidemenu(\'popUpBookmark\')" onMouseout="delayhidemenu(\'popUpBookmark\')"></div>');

function getOffset(what, offsettype){
  var totaloffset = (offsettype == "left") ? what.offsetLeft : what.offsetTop;
  var parentEl = what.offsetParent;
  while (parentEl != null) {
    totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop;
    parentEl=parentEl.offsetParent;
  }
  return totaloffset;
}

function showmenu(obj, popUp, html, redraw, optWidth, optHeight){
  if (!document.getElementById)
    return;

  clearhidemenu(popUp);
  var menuobj = document.getElementById(popUp);

  if (!(typeof redraw == "boolean" && redraw == false && menuobj && menuobj.style.visibility == "visible"))
    menuobj.innerHTML = html;

  menuobj.style.width = (typeof optWidth != "undefined") ? optWidth : defaultMenuWidth;
  menuobj.style.height = (typeof optHeight != "undefined") ? optHeight : defaultMenuHeight;
  menuX = getOffset(obj, "left") - document.body.scrollLeft;
  menuY = getOffset(obj, "top") + obj.offsetHeight - document.body.scrollTop;

  if (menuX < 0 || menuobj.offsetWidth > document.body.clientWidth)
    menuobj.style.left = document.body.scrollLeft + "px";
  else if (document.body.scrollLeft + menuX + menuobj.offsetWidth > document.body.scrollLeft + document.body.clientWidth)
    menuobj.style.left = document.body.scrollLeft + document.body.clientWidth - menuobj.offsetWidth + "px";
  else
    menuobj.style.left = document.body.scrollLeft + menuX + "px";

  if (menuY < 0 || menuobj.offsetHeight > document.body.clientHeight)
    menuobj.style.top = document.body.scrollTop + "px";
  else if (menuY+menuobj.offsetHeight > document.body.clientHeight)
    menuobj.style.top = document.body.scrollTop + document.body.clientHeight - menuobj.offsetHeight + "px";
  else
    menuobj.style.top = document.body.scrollTop + menuY + "px";

  menuobj.style.visibility = "visible";
  return false;
}

function hidemenu(popUp){
  var menuobj = document.getElementById(popUp);
  menuobj.style.visibility = "hidden";
}

function delayhidemenu(popUp){
  delayhide[popUp] = setTimeout("hidemenu('" + popUp + "')", hideDelay);
}

function clearhidemenu(popUp){
  if (delayhide[popUp]){
    clearTimeout(delayhide[popUp]);
  }
}


/* Toolbox */
function toolbox_close(){
  if (document.getElementById('lingimarkmik')) {
    document.getElementById('lingimarkmik').style.display = 'none';
    document.getElementById('tool_lingimarkmik').className = 'tool';
  }
  document.getElementById('epost').style.display = 'none';
  document.getElementById('tool_epost').className = 'tool';
  document.getElementById('kysimus').style.display = 'none';
  document.getElementById('tool_kysimus').className = 'tool';
}

function toolbox_lingimarkmik(){
  if (document.getElementById('lingimarkmik')) {
    document.getElementById('lingimarkmik').style.display = 'block';
    document.getElementById('tool_lingimarkmik').className = 'active_tool';
  }
  document.getElementById('epost').style.display = 'none';
  document.getElementById('tool_epost').className = 'tool';
  document.getElementById('kysimus').style.display = 'none';
  document.getElementById('tool_kysimus').className = 'tool';
}

function toolbox_epost(){
  if (document.getElementById('lingimarkmik')) {
    document.getElementById('lingimarkmik').style.display = 'none';
    document.getElementById('tool_lingimarkmik').className = 'tool';
  }
  document.getElementById('epost').style.display = 'block';
  document.getElementById('tool_epost').className = 'active_tool';
  document.getElementById('kysimus').style.display = 'none';
  document.getElementById('tool_kysimus').className = 'tool';
  toolbox_load_captcha();
}

function toolbox_kysimus(){
  if (document.getElementById('lingimarkmik')) {
    document.getElementById('lingimarkmik').style.display = 'none';
    document.getElementById('tool_lingimarkmik').className = 'tool';
  }
  document.getElementById('epost').style.display = 'none';
  document.getElementById('tool_epost').className = 'tool';
  document.getElementById('kysimus').style.display = 'block';
  document.getElementById('tool_kysimus').className = 'active_tool';
}

function toolbox_load_captcha() {
  img=document.getElementById('epost_captcha');
  if (img && img.src.search('pix.gif$')>=0)
    img.src = '/portaal/portaal.captcha';
}

function show_kommentaar_msg() {
  if (document.getElementById('kommentaar_msg')) {
    document.getElementById('kommentaar_msg').style.display = 'block';
  }
}


function getInnerHtml(url, outerId) {
  var outerBox = document.getElementById(outerId);
  outerBox.innerHTML = '<p style="color: green;">Laen...</p>';
  RequestData(url, function(xmlhttp, param){getInnerHtmlProcess(xmlhttp.responseText, param)}, outerId);
}

function getInnerHtmlProcess(data, outerId) {
  var outerBox = document.getElementById(outerId);
  if (data.match(/^OK/)) {
    outerBox.innerHTML = data.replace(/^OK\s*|\s*$/g,"");
    for (var i=0; i < outerBox.childNodes.length; i++) {
      var node = outerBox.childNodes[i];
      if (node.tagName=="SCRIPT") {
        eval(node.text);
      }
    }
  } else {
    outerBox.innerHTML = '<p class="alert">Viga laadimisel!</p>';
  }
}

var evormId = new Array();
var evormUri = new Array();
var evormDeps = new Array();

function evormAddChangeEvents() {
  for (var i=0; i < evormId.length; i++) {
    for (var j=0; j < evormDeps[i].length; j++) {
      var divId = evormId[i];
      var uri = evormUri[i];
      var elem = document.getElementById(evormDeps[i][j]);
      evormSetChangeEvent(divId, uri, evormDeps[i], elem);      
    }
  }
}

function evormSetChangeEvent(divId, uri, deps, elem) {
  var func = function () {
    var fullUri = uri;
    for (var i=0; i < deps.length; i++) {
      fullUri += '&' + escape_utf8(deps[i]) + '=' + escape_utf8(document.getElementById(deps[i]).value);
    }
    getInnerHtml(fullUri, divId);
  }
  if (typeof elem.onchange != 'function') {
    elem.onchange = func;
  } else {
    var oldOnchange = elem.onchange;
    elem.onchange = function() {
      oldOnchange();
      func();
    }
  }
}

/* Cookie */ 
function createCookie(name,value,minutes) {
	if (minutes) {
		var date = new Date();
		date.setTime(date.getTime()+(minutes*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-(24*60));
}

/* iFrame resize */
var lastIFrameHResize = new Date();

function resizeIFrameToContent(id)
{
  var frame = (document.getElementById ? document.getElementById(id) : document.all[id]);
  var frameDoc = 	(frame.contentDocument ? frame.contentDocument : document.frames[id].document);
  try {
    // We have to use documentElement.offsetHeight for Firefox, 
    // because body.scrollHeight is slightly less than needed.
    // documentElement.scrollHeight doesn't work either,
    // it doesn't change if window height is reduced.
    if (navigator.userAgent.indexOf("Firefox") != -1
      || navigator.userAgent.indexOf("Opera") != -1
      //|| navigator.userAgent.indexOf("MSIE 8.0") != -1
    ) {
      frame.height = frameDoc.documentElement.offsetHeight;
      if (lastIFrameHResize != frameDoc.refresh_time) {
        frame.width = "100%";
        lastIFrameHResize = frameDoc.refresh_time;
      }
      if (frameDoc.documentElement.scrollWidth > frame.scrollWidth) {
        frame.width = frameDoc.documentElement.scrollWidth; 
      }
    } else {
      frame.height = frameDoc.body.scrollHeight + 20;
      if (lastIFrameHResize != frameDoc.refresh_time) {
        frame.width = "100%";
        lastIFrameHResize = frameDoc.refresh_time;
      }
      if (frameDoc.body.scrollWidth > frame.scrollWidth) {
        frame.width = frameDoc.body.scrollWidth; 
      }
    }
    frame.scrolling = "no";
  } catch(err) {
    frame.height = 500;
    frame.scrolling = "yes";
  }
}
