//Author: Zeljko Nikolicic , zeljkoni@hotmail.com
//Copyright: www.Lernu.Net

  // JavaScript Document
//Define objects and const
var xmlDoc;// = new ActiveXObject("Microsoft.XMLDOM"); //XML parser object
var XML_FILE = ""; //root to xml document
var maindiv;
//var edit_id_begin = 'edit'+(rnd(899)+100)+'_';
var edit_id_begin = 'edit17'+'_';
var draw_id =0;
var draw_rows = 0;
var position=-10;
var test_red_color = '#95FF98'; //"#10EC10";//'#FFD9D9'; red became green :)
var plava ='; color:#00ff00';
var corect_color  = '#0099FF';
var corect_color2 = '#000000';
var word_corect_color = '#0099FE';
var select_input_color = '#BFECBD';
var global_exchange=0;
var font_size_1 = '12px';


var BWopera = (window.opera!=null);
var BWie = document.all!=null && !BWopera;
var BWns = document.getElementById && !BWie && !BWopera;
var BWmac = navigator.userAgent.indexOf("Mac")>-1;

var keyCode = 0;
var eee;

// Netscape keyboard event
//if (BWns) document.captureEvents(Event.KEYDOWN)
//if (BWns) document.addEventListener(Event.KEYDOWN);

function ns_keycode(e)
{
     // eee = e;
      keyCode = e.which;
}
if (BWns)  document.onkeypress=ns_keycode;

//**************** my XML *********************
function FirstRegularChild(xmlnode) //stupid Netscape
{
  var i = 0;
  var j;
   while (i<xmlnode.childNodes.length)
	  {
	        i++;
	        if (xmlnode.childNodes[i-1].nodeType != 1) continue;
			j= i-1;
			break;
	  }
	  return xmlnode.childNodes[j];
}
function NextRegularItemPos(xmlnode,position) //stupid Netscape
{
  var i = position+1;
  var j = -1;
   while (i<xmlnode.length)
	  {
	        i++;
	        if (xmlnode.item(i-1).nodeType != 1) continue;
			j = i-1;
			break;
	  }
	  return j;
}
function XVal0(Xnode) //return '' if node does not exist or if is empty, STUPID NETSCAPE
{
  var r ='';
  if(Xnode.length>0)
  	{
  		if ((Xnode[0].childNodes.length)>0) r = Xnode[0].firstChild.nodeValue;
	}

  return r;
}
function XVal(Xnode) //return '' if node does not exist or if is empty, STUPID NETSCAPE
{
  var r ='';
  if ((Xnode.childNodes.length)>0) r = Xnode.firstChild.nodeValue;
  //alert(Xnode.nodeValue;);
  return r;
}
function JustOneRegularSpecificTag(Xnode,tagname)
{
 var i=0;
 var no = 0;
 var no2 = 0;
 var no3 = 0;
 var x='';
 for (i=0;i<Xnode.length;i++) //to optimize, make "while" instead of "for" loop
	  {
		 x = js_trim(Xnode.item(i).nodeValue+'');
		  if (Xnode.item(i).nodeType==1)
		  {
		  	if (Xnode.item(i).nodeName==tagname) no++; else  no2++;
		  }
		  else {
		  if (x.length > 2) no3++; //looks like netscape use newline in xml as one item with length 1 or 2... this should be changed to some specific 1 or 2 chars, i hink that is chr(13) and chr(10)
		  }
	  }
	return ((no==1) && (no2+no3==0));
}
//**************************************************************
function ValidateXML(xmlDoc)
{
	if (xmlDoc==null)
		return false;
	xmlDoc.validateOnParse=true;
	return ((xmlDoc.parseError!=0) ? false : true);
}

function initXML(XML_FILE) {
    var error = "";
    try {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async=false;
		xmlDoc.onreadystatechange = function (){
            if (xmlDoc.readyState == 4) start_after_loadXML();
        };
        xmlDoc.load(XML_FILE);
    }
    catch(e) {
        try {
            xmlDoc=document.implementation.createDocument("","",null);
            xmlDoc.async=false;
            xmlDoc.onload = start_after_loadXML;
            xmlDoc.load(XML_FILE);
        }
        catch(e) {
            try {
                var xmlhttp = new window.XMLHttpRequest();
                xmlhttp.open("GET",XML_FILE,false);
                xmlhttp.send(null);
                if(xmlhttp.status == 200) {
                    xmlDoc = xmlhttp.responseXML.documentElement;
                    start_after_loadXML();
                }
//                xmlDoc = xmlhttp.responseXML.documentElement;
 //               xmlDoc = xmlhttp.responseXML;

            }
            catch(e) {
                error=e.message;
            }
        }
    }
}

/*
function initXML(XML_FILE)
{
if (document.implementation && document.implementation.createDocument)
	{
		xmlDoc = document.implementation.createDocument("", "", null);
		xmlDoc.onload = start_after_loadXML;

		xmlDoc.onload = function() {
            try {
                start_after_loadXML();
            } catch(e)
        }

		xmlDoc.load(XML_FILE);
	}
	else if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.onreadystatechange = function ()
		     {
			  if (xmlDoc.readyState == 4) start_after_loadXML();
			  };
		xmlDoc.async=false;
	    xmlDoc.load(XML_FILE);
		if (!ValidateXML(xmlDoc))
		alert("Pardonon, la ekzerco ankoraux ne estas preta.");
 	}
	else
	{
		alert('Pardonon, la ekzerco ankoraux ne estas preta.'); // bad browser
		return;
	}
}
*/
//Zeljko integer random
  function rnd(n)
    {
	  return Math.floor(Math.random()*n);
	}

// DRAW   **************************************************************************************************
function draw_test(xmltest)
 {
   //alert('debug draw');
   var tmp ="";
   //alert(xmltest.nodeName);
   //alert(document.domain + " -- " + xmltest.domain);
//alert(xmltest);
//tmp = draw_test1(xmltest);
//return tmp;
    var tip =  xmltest.getElementsByTagName("type")[0].firstChild.nodeValue;

    //alert(tip);

	if (tip==1)	{
	 tmp = draw_test1(xmltest);
	}
    else if (tip==2)
	 {
	  tmp = draw_test2(xmltest);
	 }
	  else if (tip==3)
	 {
	  tmp = draw_test3(xmltest);
	 }
	   else if (tip==4)
	 {
	  tmp = draw_test4(xmltest);
	 }
	   else if (tip==5)
	 {
	 tmp = draw_test5(xmltest);
	 }
	return tmp;
 }
 function RESET_TEST(d_id)
 {
     draw_id = d_id; //global variable draw_id
	 var test = xmlDoc.getElementsByTagName("test").item(draw_id-1);
	 var dd = "test_div_"+draw_id;
	 var testdiv = document.getElementById(dd);
     testdiv.innerHTML = draw_test(test);

 }
function draw_test1(xmltest)
   {
    var tmp='';
    tmp +='<table width="100%" border="1" cellspacing="1" cellpadding="5" style="border-collapse: collapse" bordercolor="#CCCCCC">';
    tmp +='<tr><td valign="top">';
	tmp +=draw_title(XVal0(xmltest.getElementsByTagName("id")),XVal0(xmltest.getElementsByTagName("title")));
	tmp +=draw_explain(XVal0(xmltest.getElementsByTagName("explanation")));
	tmp +=draw_green_table(xmltest.getElementsByTagName("words")[0].getElementsByTagName("part"));
	tmp +='<br>';
	if (xmltest.getElementsByTagName("examples")[0].getElementsByTagName("text")[0] !=null)
	   tmp +=draw_underline_text(xmltest.getElementsByTagName("examples")[0].getElementsByTagName("text")[0].firstChild.nodeValue);

	tmp +=draw_yellow_table(xmltest.getElementsByTagName("examples")[0].getElementsByTagName("row"));
	tmp +='<br>';

	if (xmltest.getElementsByTagName("data")[0].getElementsByTagName("text")[0] !=null)
	    tmp+= draw_underline_text(xmltest.getElementsByTagName("data")[0].getElementsByTagName("text")[0].firstChild.nodeValue);

	tmp +=draw_gray_table(xmltest.getElementsByTagName("data")[0].getElementsByTagName("row"));
	tmp +='</td></tr></table>';
	return tmp;
   }
  function draw_test2(xmltest)
   {
    var tmp='';
	tmp +='<table width="100%" border="1" cellspacing="1" cellpadding="5" style="border-collapse: collapse" bordercolor="#CCCCCC">';
    tmp +='<tr> <td valign="top"> ';
	//title 3 part
	var title = XVal0(xmltest.getElementsByTagName('title')[0].getElementsByTagName('begin'));

		xmlwords = xmltest.getElementsByTagName('words');
		xmlwords = xmlwords[xmlwords.length-1].getElementsByTagName('word');


	global_exchange = 1;
	if (xmltest.getElementsByTagName('title')[0].getElementsByTagName('words').length>0)
	  {

		  var no = xmlwords.length;
		  var AI = new Array(no);
		  var r_tmp=0;
		  for (var ri=0;ri<no;ri++) //init, regular order
		    {
			  AI[ri]=ri;
			}
			//RANDOM BEGIN
		  for (ri=0;ri<3*no;ri++)
		   {
		      i1 = rnd(no);
			  i2 = rnd(no);
		      r_tmp = AI[i1];
			  AI[i1] = AI[i2];
			  AI[i2] = r_tmp;
		   }
		  // END RANDOM,
	     var rec='';

		 var j =0;
		 title +='<b> ';
		 for (j=0;j<xmlwords.length-1;j++)
		     {
			  rec =  xmlwords.item(AI[j]).firstChild.nodeValue;
			  title += '<span onclick="vo_translate('+"'"+rec+"'"+')" onmouseover="vo_mouseover(this)" onmouseout="vo_mouseout(this)">';
			  title += rec;
			  title += '</span>';
			  title += ', ';
			  if (xmlwords.item(AI[j]).firstChild.nodeValue.length>global_exchange) global_exchange = xmlwords.item(AI[j]).firstChild.nodeValue.length;
			 }
		if (xmlwords.length>0) {
		      rec =  xmlwords.item(AI[j]).firstChild.nodeValue;
			  title += '<span onclick="vo_translate('+"'"+rec+"'"+')" onmouseover="vo_mouseover(this)" onmouseout="vo_mouseout(this)">';
			  title += rec;
			  title += '</span>';
		      title+=' ';
		    if (xmlwords.item(AI[j]).firstChild.nodeValue.length>global_exchange) global_exchange = xmlwords.item(AI[j]).firstChild.nodeValue.length;
			 }
		title +='</b>';
	 }
	 title += XVal0(xmltest.getElementsByTagName('title')[0].getElementsByTagName('end'));
	 tmp +=draw_title( XVal0(xmltest.getElementsByTagName('id')),title);
	tmp +='<br>';

	var smalltitle = FirstRegularChild(xmltest.getElementsByTagName('data')[0]);
	if (smalltitle.nodeName=='text')
	tmp+= draw_underline_text(smalltitle.firstChild.nodeValue);

	//draw content

	tmp +=draw_gray_table2(xmltest.getElementsByTagName('data')[0].getElementsByTagName('sentence'));
	tmp +='<br>';
	tmp +=draw_buttons2(draw_id,draw_rows,xmltest);



	tmp +='</td></tr></table>';
	//alert(global_exchange);
    return tmp;
   }
function draw_test3(xmltest)
   {

    var show_left =true;
	var new_line = false;
    if (xmltest.getElementsByTagName("noleft").length>0) {show_left=false;}
	if (xmltest.getElementsByTagName("newline").length>0) {new_line=true;}

    var tmp='';
    tmp +='<table width="100%" border="1" cellspacing="1" cellpadding="5" style="border-collapse: collapse" bordercolor="#CCCCCC">';
    tmp +='<tr> <td valign="top"> ';
	tmp +=draw_title(XVal0(xmltest.getElementsByTagName("id")),XVal0(xmltest.getElementsByTagName("title")));

	tmp +='<br>';

	var smalltitle = FirstRegularChild(xmltest.getElementsByTagName('examples')[0]);
	if (smalltitle.nodeName=='title') tmp+= draw_underline_text(smalltitle.firstChild.nodeValue);



	tmp +=draw_yellow_table3(xmltest.getElementsByTagName("examples")[0].getElementsByTagName("sentence"),show_left,new_line);


	tmp +='<br>';

	 smalltitle = FirstRegularChild(xmltest.getElementsByTagName('data')[0]);
	if (smalltitle.nodeName=='title') tmp+= draw_underline_text(smalltitle.firstChild.nodeValue);


	tmp +=draw_gray_table3(xmltest.getElementsByTagName("data")[0].getElementsByTagName("sentence"),show_left,new_line);
	tmp +='<br>';
    tmp +=draw_buttons3(draw_id,draw_rows,xmltest);

	tmp +='</td></tr></table>';
	return tmp;
   }
    function draw_test4(xmltest)
   {
    var tmp='';
	tmp +='<table width="100%" border="1" cellspacing="1" cellpadding="5" style="border-collapse: collapse" bordercolor="#CCCCCC">';
    tmp +='<tr> <td valign="top"> ';
	//title 3 part
	var title = xmltest.getElementsByTagName('title')[0].getElementsByTagName('begin')[0].firstChild.nodeValue;

	var xmlwords = xmltest.getElementsByTagName('words');
	xmlwords = xmlwords[xmlwords.length-1].getElementsByTagName('word');

	global_exchange = 1;
if (xmltest.getElementsByTagName('title')[0].getElementsByTagName('words').length>0)
	  {

		  var no = xmlwords.length;
		  var AI = new Array(no);
		  var r_tmp=0;
		  for (var ri=0;ri<no;ri++) //init, regular order
		    {
			  AI[ri]=ri;
			}
			//RANDOM BEGIN
		  for (ri=0;ri<3*no;ri++)
		   {
		      i1 = rnd(no);
			  i2 = rnd(no);
		      r_tmp = AI[i1];
			  AI[i1] = AI[i2];
			  AI[i2] = r_tmp;
		   }
		  // END RANDOM,
	     var rec='';

		 var j =0;
		 title +='<b> ';
		 for (j=0;j<xmlwords.length-1;j++)
		     {
			  rec =  xmlwords.item(AI[j]).firstChild.nodeValue;
			  title += '<span onclick="vo_translate('+"'"+rec+"'"+')" onmouseover="vo_mouseover(this)" onmouseout="vo_mouseout(this)">';
			  title += rec;
			  title += '</span>';
			  title += ', ';
			  if (xmlwords.item(AI[j]).firstChild.nodeValue.length>global_exchange) global_exchange = xmlwords.item(AI[j]).firstChild.nodeValue.length;
			 }
		if (xmlwords.length>0) {
		      rec =  xmlwords.item(AI[j]).firstChild.nodeValue;
			  title += '<span onclick="vo_translate('+"'"+rec+"'"+')" onmouseover="vo_mouseover(this)" onmouseout="vo_mouseout(this)">';
			  title += rec;
			  title += '</span>';
		      title+=' ';
		    if (xmlwords.item(AI[j]).firstChild.nodeValue.length>global_exchange) global_exchange = xmlwords.item(AI[j]).firstChild.nodeValue.length;
			 }
		title +='</b>';
	 }
	title += XVal0(xmltest.getElementsByTagName('title')[0].getElementsByTagName('end'));
	tmp +=draw_title(XVal0(xmltest.getElementsByTagName("id")),title);
	tmp +='<br>';


	    tmp+= draw_underline_text(XVal0(xmltest.getElementsByTagName("data")[0].getElementsByTagName("title")));

	    tmp +=draw_gray_table4(xmltest.getElementsByTagName("data")[0].getElementsByTagName("sentence"));
		tmp +='<br>';
		tmp +=draw_buttons4(draw_id,draw_rows,xmltest);

	tmp +='</td></tr></table>';
	//alert(global_exchange);
    return tmp;
   }
   function draw_test5(xmltest)
   {
    var tmp='';
    tmp +='<table width="100%" border="1" cellspacing="1" cellpadding="5" style="border-collapse: collapse" bordercolor="#CCCCCC">';
    tmp +='<tr> <td valign="top"> ';
	tmp +=draw_title(XVal0(xmltest.getElementsByTagName("id")),XVal0(xmltest.getElementsByTagName("title")));
	tmp +='<br>';




	    tmp+= draw_underline_text(XVal0(xmltest.getElementsByTagName("data")[0].getElementsByTagName("title")));

	tmp +=draw_gray_table5(xmltest.getElementsByTagName("data")[0].getElementsByTagName("sentence"));
	tmp +='<br>';
	tmp +=draw_buttons5(draw_id,draw_rows,xmltest);

	tmp +='</td></tr></table>';
	return tmp;
   }
	//*********************************************************************************************************
 function draw_underline_text(s1)
   {
     var tmp = '';
	  if (s1!='')
	  {
	     tmp = '<p class="text"><u>'+s1+'</u></p>';
	  }
	  return tmp;
   }
 function draw_title(s1,s2)
  {
      var tmp = '';
	  if ((s1!='') || (s2!=''))
	  {
      tmp +='	<table width="100%" height="20" border="0" cellpadding="0" cellspacing="1" class="text">';
      tmp +='  <tr>';
	  if (s1!='') {
      tmp +='    <td width="40" align="center" bgcolor="#00CC66"><strong><font color="#FFFFFF">'+s1;
      tmp +='      </font></strong></td>';
	  }
	  if (s2!='')
	   {
        tmp +='    <td width="10">&nbsp;</td>';
        tmp +='    <td>'+s2+'</td>';
	  }
      tmp +='  </tr>';
      tmp +='</table>';
	  }
	  return tmp;
  }

  function draw_explain(s1)
   {
    var tmp = '';
	 if (s1!='') {
	   tmp += '<p class="text">'+s1+'</p>'
	 }
    return tmp;
  }


	function draw_green_table(xmlnode)
	  {
	  var tmp = '';
	  var i = 0;
	  var j = 0;
      tmp +='<table width="100%" border="0" cellspacing="2" cellpadding="5">';
      tmp +='<tr align="center">';

	  for (j=0;j<xmlnode.length;j++)
	  {
	    xmlmulti = xmlnode.item(j).getElementsByTagName("multi");
		if (xmlmulti.length==0)
         {
		  xmlpart = xmlnode.item(j).getElementsByTagName("word");
          tmp +='  <td nowrap bgcolor="#DBFFD5"><span class="text"><strong>';
	       for (i=0;i<xmlpart.length;i++)
	         {

			   tmp +='    '+XVal(xmlpart.item(i))+'<br>';
	          }
		   tmp +='	</strong></span></td>';
		   }
		   else {
		   xmlbegin = xmlmulti.item(0).getElementsByTagName("word");
		   xmlend = xmlmulti.item(1).getElementsByTagName("word");

		 tmp +='<td align="center" nowrap bgcolor="#DBFFD5" class="text">';
		  tmp +='<table border="0" cellspacing="0" cellpadding="5"><tr>';

                tmp +='<td align="right" bgcolor="#DBFFD5" class="text"><strong>';
				for (i=0;i<xmlbegin.length;i++)
				 {
                  tmp +=xmlbegin.item(i).firstChild.nodeValue+'<br>';
				  }
				 tmp +=' </strong></td>';

                tmp +='<td nowrap bgcolor="#BFECBD" class="text"><strong>';
			for (i=0;i<xmlend.length;i++)
				 {
                  tmp +=xmlend.item(i).firstChild.nodeValue+'<br>';
				  }
				 tmp += '</strong></td>';
          tmp +='</tr></table></td>';
		   }
		}

           tmp +='</tr>';
        tmp +='</table>';
		///alert('end green');
		return tmp;
	  }

	  function draw_yellow_table(xmlnode)
	   {
	     var i = 0;
    	  var j = 0;
	   //alert('yellow');
	   var tmp = '';
       var end_of_sentence='.';
	   //var redni_broj=1;
	   tmp +='<table width="100%" border="0" cellpadding="4" cellspacing="0">';
	    for (j=0;j<xmlnode.length;j++) //each row
	  {

        tmp +='<tr>';
        tmp +='<td  width="10" height="20" align="right" class="text">'+(j+1)+')</td>';

         xmlcolumn = xmlnode.item(j).getElementsByTagName("column");
		  if  (xmlnode.item(j).getElementsByTagName("end")[0]!=null) {end_of_sentence=xmlnode.item(j).getElementsByTagName("end")[0].firstChild.nodeValue;} else {end_of_sentence='.';}
		  for (i=0;i<xmlcolumn.length;i++) //each column
	       {
          tmp +=' <td   height="20" class="splitter_yellow">';
		   xmlmulti = xmlcolumn.item(i).getElementsByTagName("part");
		   if (xmlmulti.length==0)
		   {
		   tmp +='<input type="text" class="edit_yellow" style="width:100%" value ="'+xmlcolumn.item(i).firstChild.nodeValue+'" readonly>'
		   }
		   else {
		   tmp +='<table border="0" cellspacing="0" cellpadding="0" width="100%">';
           tmp +='  <tr> ';
		   tmp +='  <td><input  type="text" class="edit_yellow" style="width:100%; text-align: right" value ="'+xmlmulti.item(0).firstChild.nodeValue+'" readonly ></td>';
		   tmp +='  <td> <input  type="text" class="edit_yellow" style="width:100%; text-align: left;color=gray" value ="'+xmlmulti.item(1).firstChild.nodeValue+'" readonly ></td>';
		   tmp +='</tr></table>';
		  }
		  tmp +='</td>';
		   }
		 tmp +=' <td   height="20" width="5" valign="bottom"  class="splitter_yellow"><strong>'+end_of_sentence+'</strong></td>';
        tmp +='</tr>';
		}
      tmp +='</table>';
	  return tmp;
	   }
	function draw_yellow_table3(xmlnode,show_left,newline)
	   {
	     var i = 0;
    	 var j = 0;
	     var tmp = '';

         var razmak=' ';
		 var ravnanje = "center;";
		 var next_nospace = false;
		 var sirina = 100;
		//var newline = true;

	tmp +='<table width="100%" border="0" cellpadding="5" cellspacing="2" class="text">';

	  //xmlrow = xmlnode.item(j).getElementsByTagName("column");
	 for (i=0;i<xmlnode.length;i++) //each column
	 {
	 tmp +='   <tr valign="middle"> ';

	 tmp +='      <td width="20" height="20" align="center">'+(i+1)+')</td>';

	//draw left
	  var set_td_sirina = '';
	 if(show_left)
	  {
	   xmlrecenica = xmlnode.item(i).getElementsByTagName("left")[0].childNodes;
	  if (!(newline))
	   {
	      set_td_sirina = 'width="50%"';    //right column will be 1/2 of table size
	   }

	   tmp +='      <td  height="20" bgcolor="#FFFDCE" style="font-size: '+font_size_1+'">';

	   razmak=' ';
	 for (j=0;j<xmlrecenica.length;j++)
	  {
	  if ((xmlrecenica.item(j).nodeName!='bold')&&(xmlrecenica.item(j).nodeName!='nospace')) {tmp+=razmak+xmlrecenica.item(j).nodeValue;razmak=' ';}
	   else if (xmlrecenica.item(j).nodeName=='nospace') {razmak='';}
	   else {
	       tmp+=razmak+'<strong>'+xmlrecenica.item(j).firstChild.nodeValue+'</strong>';
		   razmak=' ';
			}
	   //space
	}
	tmp +='</td>';
	if (newline)
	  {
	     tmp +='</tr><tr valign="middle">';
		 tmp +='<td width="20" height="20" align="center">'+' '+'</td>';
	  }
	} //end of draw left




	//right
	xmlrecenica = xmlnode.item(i).getElementsByTagName("right")[0].childNodes;
    tmp +='      <td nowrap '+set_td_sirina+' height="20" bgcolor="#FFFFE6" style="font-size: '+font_size_1+'">';
	razmak=' ';
	 for (j=0;j<xmlrecenica.length;j++)
	  {
	  if ((xmlrecenica.item(j).nodeName!='in')&&(xmlrecenica.item(j).nodeName!='nospace')) {tmp+=razmak+xmlrecenica.item(j).nodeValue;razmak=' ';}
	   else if (xmlrecenica.item(j).nodeName=='nospace') {razmak='';}
	   else {
	        next_nospace = (j+1<xmlrecenica.length);
			if (next_nospace) {next_nospace = (xmlrecenica.item(j+1).nodeName=='nospace')}
			//alert(next_nospace);
			ravnanje = 'center';
	       if ((razmak=='') && (!(next_nospace))) {ravnanje = 'left';}
			 else if ((razmak!='') && (!(next_nospace))) {ravnanje = 'center';}
			 else if ((razmak=='') && (next_nospace)) {ravnanje = 'center';}
			 else if ((razmak!='') && ((next_nospace))) {ravnanje = 'right';}
			  else {alert('greska');}

			//sirina = xmlrecenica.item(j).firstChild.nodeValue.length*8;
			sirina = calculate_in_width(xmlrecenica.item(j).firstChild.nodeValue.length,ravnanje);



			if (JustOneRegularSpecificTag(xmlrecenica,'in'))  //extra setings, just one <in> on right side
		  {
		    sirina='99%';
			//maxduzina+=5;
			ravnanje = "left";
		  }

	       tmp+=razmak+'<input name="text2" type="text" class="edit_yellow_u" style="width:'+sirina+';text-align: '+ravnanje+';" value="'+xmlrecenica.item(j).firstChild.nodeValue+'" readonly>';

		   razmak=' ';
			}
	   //space
	}
	tmp +='</td>';
	tmp +='    </tr>';
		}
	tmp +='	</table>';

	  return tmp;
	   }
function draw_gray_table(xmlnode)
	{
	   var i = 0;
	   var j = 0;
	   procenat_sirine = 20;
	   readonly='';

	   initboja = '';
	   var tmp = '';
	   var id ='';
	   var tt = ' tt="'+draw_id+'" ';
	   var tabnext ='';
	   var mul = 0;
	   var end_of_sentence = '.';
	   //var redni_broj=1;
	   tmp +='<table width="100%" border="0" cellpadding="4" cellspacing="0">';
	    for (j=0;j<xmlnode.length;j++) //each row
	  {
	    mul = 0;
		td_i = 1;
        tmp +='<tr>';
        tmp +='<td  width="10" height="20" align="right" class="text">'+(j+1)+')</td>';
         xmlcolumn = xmlnode.item(j).getElementsByTagName("column");
		  if  (xmlnode.item(j).getElementsByTagName("end")[0]!=null) {end_of_sentence=xmlnode.item(j).getElementsByTagName("end")[0].firstChild.nodeValue;} else {end_of_sentence='.';}
		  procenat_sirine = 100 /xmlcolumn.length ;
		  for (i=0;i<xmlcolumn.length;i++) //each column
	       {

		  td_id = 'td_'+ edit_id_begin+draw_id+'_'+(j+1)+'_'+td_i;td_i++;
		  //alert(td_id);
          tmp +=' <td   id="'+td_id+'" height="20" class="splitter"  width="'+procenat_sirine+'%">';
		   xmlmulti = xmlcolumn.item(i).getElementsByTagName("part");
		   if (xmlmulti.length==0)
		   {
		   id = edit_id_begin+draw_id+'_'+(j+1)+'_'+(i+mul+1);
		   if (i==(xmlcolumn.length-1)) { tabnext =edit_id_begin+draw_id+'_'+(j+2)+'_'+1;}
		   else {tabnext =edit_id_begin+draw_id+'_'+(j+1)+'_'+(i+mul+2);}


		 if (XVal(xmlcolumn.item(i)) =='')
		   {
		     initboja='';
			 readonly='';
			 boja = "black";
		   }
		   else
		   {
		     initboja=plava;
			 boja = plava;
			 readonly='readonly';
		   }
		 tmp +='<input testtype="1" type="text" class="edit_gray" style="width:100%'+initboja+'" '+readonly+' boja='+boja+' value ="'+XVal(xmlcolumn.item(i))+'"'+tt+' xx="'+(i+1)+'" yy="'+(j+1)+'"'+'" onKeyDown="e_down(this)" onKeyUp="e_up(this)"  onKeyPress="e_press(this)" onblur="e_blur(this)" onfocus="e_focus(this)"  onchange="e_change(this)" id="'+id+'" tnext="'+tabnext+'">';
		   }
		   else { //1 rec od 2 dela
		   tmp +='<table border="0" cellspacing="0" cellpadding="0" width="100%">';
           tmp +='  <tr align="center">';

			id = edit_id_begin+draw_id+'_'+(j+1)+'_'+(i+mul+1);
		   if (i==(xmlcolumn.length-1)) { tabnext =edit_id_begin+draw_id+'_'+(j+2)+'_'+1;}
		   else {tabnext =edit_id_begin+draw_id+'_'+(j+1)+'_'+(i+mul+2);}
		   mul++;

		   if (XVal(xmlmulti.item(0)) =='')
		   {
		     initboja='';
			 readonly='';
			boja = "black";
		   }
		   else
		   {
		     initboja=plava;
			 boja = plava;
			 readonly='readonly';
		   }

		   tmp +='  <td width="70%"><input testtype="1"  type="text" class="edit_gray" style="width:100%; text-align: right'+initboja+'" '+readonly+' boja='+boja+' mm="0" value ="'+XVal(xmlmulti.item(0))+'"'+tt+' xx="'+(i+1)+'" yy="'+(j+1)+'"'+'" onKeyDown="e_down(this)" onKeyUp="e_up(this)"  onKeyPress="e_press(this)" onblur="e_blur(this)" onfocus="e_focus(this)" onchange="e_change(this)" id="'+id+'" tnext="'+tabnext+'"></td>';

		   id = edit_id_begin+draw_id+'_'+(j+1)+'_'+(i+mul+1);
		   if (i==(xmlcolumn.length-1)) { tabnext =edit_id_begin+draw_id+'_'+(j+2)+'_'+1;}
		   else {tabnext =edit_id_begin+draw_id+'_'+(j+1)+'_'+(i+mul+2);}
		    if (XVal(xmlmulti.item(1)) =='')
		   {
		     initboja='';
			 readonly='';
			 boja = "gray";
		   }
		   else
		   {
		     initboja=plava;
			 boja = plava;
			 readonly='readonly';
		   }
		   tmp +='  <td width="30%"> <input  testtype="1" type="text" class="edit_gray" style="width:100%; text-align: left'+initboja+'" '+readonly+' boja='+boja+' mm="1" value ="'+XVal(xmlmulti.item(1))+'"'+tt+' xx="'+(i+1)+'" yy="'+(j+1)+'"'+'" onKeyDown="e_down(this)" onKeyUp="e_up(this)"  onKeyPress="e_press(this)" onblur="e_blur(this)" onfocus="e_focus(this)" onchange="e_change(this)" id="'+id+'" tnext="'+tabnext+'"></td>';
		   tmp +='</tr></table>';
		  }
		  tmp +='</td>';
		   }
		 td_id = 'td_'+ edit_id_begin+draw_id+'_'+(j+1)+'_'+td_i;td_i++;
		 tmp +=' <td   id="'+td_id+'" height="20" width="5" valign="bottom"  class="splitter"><strong>'+end_of_sentence+'</strong></td>';
        tmp +='</tr>';
		}
      tmp +='</table>';
	  return tmp;
	}
 function draw_gray_table2(xmlnode)
	  {
	   //i add this 3 variables for <nospace> option
	   var razmak=' ';             //space
	   var ravnanje = "center;";  //align
	   var next_nospace = false;   //next element <nospace>
	   var span_id='';
	   var tmp = "";
	   var i=0;
	   var j=0;
	   var next_reg;
	   var boja = "#000000";
	   var id ='';
	   var tt = ' tt="'+draw_id+'" ';
	   var tabnext ='';
	   var broj_in = 0;
	   var maxduzina = 10;


	   if (global_exchange>0)
	   		{
	   			maxduzina=global_exchange+1;
	   			var sirina = calculate_in_width(maxduzina,'');
	   			//  if (maxduzina >8) sirina -=maxduzina; //one  try to save space using average letter size, not maximum size, for width>9
	   			global_exchange = 0;
	 		 }
	   tmp+='<table width="100%" border="0" cellpadding="5" cellspacing="0" class="text">';
       tmp+=' <tr><td style="background-color: #f5f5f5;font-size: '+font_size_1+'">';

	   for (i=0;i<xmlnode.length;i++) //each row
	  		{
				xmlrecenica = xmlnode.item(i).childNodes;
				broj_in = xmlnode.item(i).getElementsByTagName('in').length;
				span_id = 'span_'+edit_id_begin+draw_id+'_'+(i+1);
				tmp+='<span id="'+span_id+'" style="background-color: #f5f5f5">';
				col = 0;
	   			razmak = ' ';
				first_big = -1;
	   		   for (j=0;j<xmlrecenica.length;j++)  //each column
	   				{
	   					if (xmlrecenica.item(j).nodeName=='text')
							{
								tmp+=razmak+xmlrecenica.item(j).firstChild.nodeValue;razmak=' ';
								//if (first_big<0)
									{
										first_big = 0;
									}
							}
					    else  if (xmlrecenica.item(j).nodeName=='nospace')
							{
							    razmak='';
								//if (first_big<0)
									{
										first_big = 0;
									}
							}
						else  if (xmlrecenica.item(j).nodeName=='in')
							{

								next_reg = NextRegularItemPos(xmlrecenica,j);
								next_nospace = ((next_reg>0) && (next_reg<xmlrecenica.length));
								if (next_nospace)
									{
										next_nospace = (xmlrecenica.item(next_reg).nodeName=='nospace')
									}
								ravnanje = 'center';
	       						if ((razmak=='') && (!(next_nospace)))
									{
										ravnanje = 'left';
									}
								else if ((razmak!='') && (!(next_nospace)))
									{
										ravnanje = 'center';
									}
			 					else if ((razmak=='') && (next_nospace))
									{
										ravnanje = 'center';
									}
								else if ((razmak!='') && ((next_nospace)))
							 		{
							 			ravnanje = 'right';
									}
		  						col++;
		  						id = edit_id_begin+draw_id+'_'+(i+1)+'_'+col;

		  		                if (first_big<0)
									{
										first_big = 1;
									}
							   	else
									{
										first_big = 0;
									}

		 						if (broj_in == col)
									{
										tabnext =  edit_id_begin+draw_id+'_'+(i+2)+'_'+1;
										last=1;
									}
								else
									{
										tabnext =  edit_id_begin+draw_id+'_'+(i+1)+'_'+(col+1);
										last=0;
									}
								tmp+=razmak+'<input testtype="2" type="text" class="edit_gray_u"  style="width:'+sirina+'; color:#000000;background-color: #f5f5f5;text-align: '+ravnanje+';" maxlength="'+maxduzina+'"'+' boja='+boja+' value =""'+tt+' xx="'+(i+1)+'" yy="'+(col)+'"'+'" onKeyDown="e_down(this)" onKeyUp="e_up(this)"  onKeyPress="e_press(this)" onblur="e_blur(this)" onfocus="e_focus(this)" onchange="e_change(this)" id="'+id+'" tnext="'+tabnext+'" '+'capital="'+first_big+'" last="'+last+'">';
		 						razmak=' ';
		 					}

	   				}
				tmp+='</span>&nbsp;';
			}
       	tmp +=' </td></tr></table><br>';
	   	draw_rows = i;
		return tmp;
  	}
  function draw_gray_table3(xmlnode,show_left,newline)
   {

	  var span_id='';
	  var tmp = "";
	  var i=0;
	  var j=0;
	  var boja = "#000000";
	   var id ='';
	   var tt = ' tt="'+draw_id+'" ';
	   var tabnext ='';
	   var broj_in = 0;
	   // velcina edita
	  var maxduzina = 10;
	  var sirina = 50;

	  //var newline = false;

	   var razmak=' ';
	   var ravnanje = "center;";
	   var next_nospace = false;


	 // if (global_exchange>0) {
	  maxduzina=global_exchange+1;
	  sirina = calculate_in_width(maxduzina,'');
	  var ii = 0;
	    // if (maxduzina >8) sirina -=maxduzina; //one  try to save space using average letter size, not maximum size, for width>9
	 // global_exchange = 0;
	 // }
	  // end velicina edita
	   tmp+='<table width="100%" border="0" cellpadding="5" cellspacing="2" class="text">';

	for (i=0;i<xmlnode.length;i++) //each sentence
	  {
	  tmp+=' <tr valign="middle">';



	   tmp +='      <td width="20" height="20" align="center">'+(i+1)+')</td>';

	   //draw LEFT
	  var set_td_sirina = '';
	 if(show_left)
	  {
	  xmlrecenica = xmlnode.item(i).getElementsByTagName("left")[0].childNodes;
	  if (!(newline))
	    {
	     set_td_sirina = 'width="50%"';    //right column will be 1/2 of table size
		}
	   tmp +='<td style="background-color: #f0f0f0;font-size: '+font_size_1+'">';

		  razmak=' ';

	 for (j=0;j<xmlrecenica.length;j++)
	  {
	  if ((xmlrecenica.item(j).nodeName!='bold')&&(xmlrecenica.item(j).nodeName!='nospace')) {tmp+=razmak+xmlrecenica.item(j).nodeValue;razmak=' ';}
	   else if (xmlrecenica.item(j).nodeName=='nospace') {razmak='';}
	   else {

	       tmp+=razmak+'<strong>'+xmlrecenica.item(j).firstChild.nodeValue+'</strong>';
		   razmak=' ';
			}
	    }
	   tmp +='</td>';
	   if (newline)
	  {
	     tmp +='</tr><tr valign="middle">';
		 tmp +='<td width="20" height="20" align="center">'+' '+'</td>';
	  }
	   }

	  //RIGHT

	   xmlrecenica = xmlnode.item(i).getElementsByTagName("right")[0].childNodes;
	   broj_in = xmlnode.item(i).getElementsByTagName("right")[0].getElementsByTagName("in").length;
	   //alert('broj in ='+broj_in);
	   span_id = 'span_'+edit_id_begin+draw_id+'_'+(i+1);
	   td_id = 'td_'+edit_id_begin+draw_id+'_'+(i+1);
		//alert('['+span_id+']');
		//who want to optimize this? me not for sure....zeljkoni
	   tmp+='<td nowrap id="'+td_id+'" '+set_td_sirina+' style="background-color: #f5f5f5">';
	   tmp+='<span id="'+span_id+'" style="background-color: #f5f5f5;font-size: '+font_size_1+'">';
	   col = 0;

	   razmak=' ';
	 for (j=0;j<xmlrecenica.length;j++)
	  {
	  if ((xmlrecenica.item(j).nodeName!='in')&&(xmlrecenica.item(j).nodeName!='nospace')) {tmp+=razmak+xmlrecenica.item(j).nodeValue;razmak=' ';}
	   else if (xmlrecenica.item(j).nodeName=='nospace') {razmak='';}
	   else {
	        next_nospace = (j+1<xmlrecenica.length);
			if (next_nospace) {next_nospace = (xmlrecenica.item(j+1).nodeName=='nospace')}
			//alert(next_nospace);
			ravnanje = 'center';
	       if ((razmak=='') && (!(next_nospace))) {ravnanje = 'left';}
			 else if ((razmak!='') && (!(next_nospace))) {ravnanje = 'center';}
			 else if ((razmak=='') && (next_nospace)) {ravnanje = 'center';}
			 else if ((razmak!='') && ((next_nospace))) {ravnanje = 'right';}
			  //else {alert('greska');}

			  //calculate sirina i maxduzina    (width & max_letter_width)
			  xml_cor = xmlrecenica.item(j).getElementsByTagName("corect");
			  maxduzina = 1;
			 for (ii=0;ii<xml_cor.length;ii++)
			  {
				 if (xml_cor.item(ii).firstChild.nodeValue.length>maxduzina) {maxduzina = xml_cor.item(ii).firstChild.nodeValue.length;}
			  }
			   sirina = calculate_in_width(maxduzina,'');
			   maxduzina = maxduzina + 1;
		  col++;
		  id = edit_id_begin+draw_id+'_'+(i+1)+'_'+col;

		  		  if (j==0)   {first_big=1} //Capital is Big
		         else {first_big=0}


				 //alert(col+' '+broj_in);
		  if (broj_in ==col) {tabnext =  edit_id_begin+draw_id+'_'+(i+2)+'_'+1;last=1;}
		                else {tabnext =  edit_id_begin+draw_id+'_'+(i+1)+'_'+(col+1);last=0;}
						//alert(maxduzina);

		if (JustOneRegularSpecificTag(xmlrecenica,'in'))  //extra setings, just one <in> on right side
		  {
		    sirina='99%';
			maxduzina+=5;
			ravnanje = "left";
		  }

	     tmp+=razmak+'<input testtype="3" type="text"  class="edit_gray_u" style="width:'+sirina+'; color:#000000;background-color: #f5f5f5;text-align: '+ravnanje+';"  maxlength="'+maxduzina+'"'+' boja='+boja+' value =""'+tt+' xx="'+(i+1)+'" yy="'+(col)+'"'+'" onKeyDown="e_down(this)" onKeyUp="e_up(this)"  onKeyPress="e_press(this)" onblur="e_blur(this)" onfocus="e_focus(this)" onchange="e_change(this)" id="'+id+'" tnext="'+tabnext+'" '+'capital="'+first_big+'" last="'+last+'">';




		   razmak=' ';
			}
	}

	   /*
	   for (j=0;j<xmlrecenica.length;j++)  //each column
	   {

	   if (xmlrecenica.item(j).nodeName!='in') {tmp+=xmlrecenica.item(j).firstChild.nodeValue;}
		else {
		    //calculate siria i maxduzina
			  xml_cor = xmlrecenica.item(j).getElementsByTagName("corect");
			  maxduzina = 1;
			 for (ii=0;ii<xml_cor.length;ii++)
			  {
				 if (xml_cor.item(ii).firstChild.nodeValue.length>maxduzina) {maxduzina = xml_cor.item(ii).firstChild.nodeValue.length;}
				  sirina = 8 * maxduzina;

			  }
		  col++;
		  id = edit_id_begin+draw_id+'_'+(i+1)+'_'+col;
		  		  if (j==0)   {first_big=1} //Capital is Big
		         else {first_big=0}
		  if (broj_in ==col) {tabnext =  edit_id_begin+draw_id+'_'+(i+2)+'_'+1;last=1;}
		                else {tabnext =  edit_id_begin+draw_id+'_'+(i+1)+'_'+(col+1);last=0;}
	     tmp+=' <input testtype="3" type="text" class="edit_gray_u"  style="width:'+sirina+'; color:#000000;background-color: #f5f5f5" maxlength="'+maxduzina+'"'+' boja='+boja+' value =""'+tt+' xx="'+(i+1)+'" yy="'+(col)+'"'+'" onKeyDown="e_down(this)" onKeyUp="e_up(this)"  onKeyPress="e_press(this)" onblur="e_blur(this)" onfocus="e_focus(this)" onchange="e_change(this)" id="'+id+'" tnext="'+tabnext+'" '+'capital="'+first_big+'" last="'+last+'"> ';
		 }
	   }
	   */
	tmp+='</span>&nbsp;';
	tmp+='</td>';
	tmp +='</tr>';
     }
    tmp+='</table>';
    draw_rows = i;
    return tmp;
   }

function draw_gray_table4(xmlnode)
	{

		var span_id='';
		var tmp = "";
		var i=0;
		var j=0;
		var boja = "#000000";
		var id ='';
		var tt = ' tt="'+draw_id+'" ';
		var tabnext ='';
		var broj_in = 0;
		var maxduzina = 8;

		if (global_exchange>0) { maxduzina=global_exchange+1;}
	    var sirina = calculate_in_width(maxduzina,'');
		var razmak=' ';
		var ravnanje = "center;";
		var next_nospace = false;

		var ii = 0;
		tmp+='<table width="100%" border="0" cellpadding="5" cellspacing="2" class="text">';

		for (i=0;i<xmlnode.length;i++) //each sentence
			{
				tmp+=' <tr valign="middle">';

	          //LEFT 4
				xmlrecenica = xmlnode.item(i).getElementsByTagName("left")[0].childNodes;
				broj_in = xmlnode.item(i).getElementsByTagName("left")[0].getElementsByTagName("in").length;
				span_id = 'span_'+edit_id_begin+draw_id+'_'+(i+1);
				td_id = 'td_'+edit_id_begin+draw_id+'_'+(i+1);
				//who want to optimize this? me not for sure....zeljkoni
				tmp +='      <td width="20" height="20" align="center">'+(i+1)+')</td>';
				tmp+='<td nowrap id="'+td_id+'" width="50%" style="background-color: #f5f5f5">';
				tmp+='<span id="'+span_id+'" style="background-color: #f5f5f5;font-size: '+font_size_1+'">';
				col = 0;
				razmak=' ';
				first_big = -1;
				for (j=0;j<xmlrecenica.length;j++)
					{
						if ((xmlrecenica.item(j).nodeName!='in')&&(xmlrecenica.item(j).nodeName!='nospace'))
							{
								tmp+=razmak+xmlrecenica.item(j).nodeValue;
			                    razmak=' ';
								//if (first_big<0)
									{
										first_big = 0;
									}
							}
						else if (xmlrecenica.item(j).nodeName=='nospace')
							{
								razmak='';
								//if (first_big<0)
									{
										first_big = 0;
									}
							}
						else if (xmlrecenica.item(j).nodeName=='in')
							{
								next_nospace = (j+1<xmlrecenica.length);
								if (next_nospace)
									{
										next_nospace = (xmlrecenica.item(j+1).nodeName=='nospace')
									}
								ravnanje = 'center';
								if ((razmak=='') && (!(next_nospace)))
									{
										ravnanje = 'left';
									}
								else if ((razmak!='') && (!(next_nospace)))
									{
										ravnanje = 'center';
									}
								else if ((razmak=='') && (next_nospace))
									{
										ravnanje = 'center';
									}
								else if ((razmak!='') && ((next_nospace)))
									{
										ravnanje = 'right';
									}
								col++;
								id = edit_id_begin+draw_id+'_'+(i+1)+'_'+col;

							    if (first_big<0)
									{
										first_big = 1;
									}
							   	else
									{
										first_big = 0;
									}

								if (broj_in ==col)
							 		{
							 			tabnext =  edit_id_begin+draw_id+'_'+(i+2)+'_'+1;
							 			last=1;
							 		}
							 	else
							 		{
							 			tabnext =  edit_id_begin+draw_id+'_'+(i+1)+'_'+(col+1);
										last=0;
									}
								if (JustOneRegularSpecificTag(xmlrecenica,'in'))  //extra setings, just one <in> on right side
									{
										sirina='99%';
										maxduzina+=5;
										ravnanje = "left";
									}
								tmp+=razmak+'<input testtype="4" type="text"  class="edit_gray_u" style="width:'+sirina+'; color:#000000;background-color: #f5f5f5;text-align: '+ravnanje+';"  maxlength="'+maxduzina+'"'+' boja='+boja+' value =""'+tt+' xx="'+(i+1)+'" yy="'+(col)+'"'+'" onKeyDown="e_down(this)" onKeyUp="e_up(this)"  onKeyPress="e_press(this)" onblur="e_blur(this)" onfocus="e_focus(this)" onchange="e_change(this)" id="'+id+'" tnext="'+tabnext+'" '+'capital="'+first_big+'" last="'+last+'">';
								razmak=' ';
							}
					}
				tmp+='</span>&nbsp;';
				tmp+='</td>';

	           //RIGHT
				xmlrecenica = xmlnode.item(i).getElementsByTagName("right")[0].childNodes;
				tmp +='<td width="50%" style="background-color: #f0f0f0;font-size: '+font_size_1+'">';
				razmak=' ';
				for (j=0;j<xmlrecenica.length;j++)
					{
						if ((xmlrecenica.item(j).nodeName!='bold')&&(xmlrecenica.item(j).nodeName!='nospace'))
							{
								tmp+=razmak+xmlrecenica.item(j).nodeValue;
								razmak=' ';
							}
						else if (xmlrecenica.item(j).nodeName=='nospace')
							{
								razmak='';
							}
						else
							{
								tmp+=razmak+'<strong>'+xmlrecenica.item(j).firstChild.nodeValue+'</strong>';
								razmak=' ';
							}
					}
				tmp +='</td>';
			}
		tmp +='</tr>';
    	tmp+='</table>';
		draw_rows = i;
    	return tmp;
 	}


function draw_buttons5(draw_id,i,xmltest)	//3 BUTTONS , i =  number of rows
	{
	    var label='';
		var tmp ='';
		tmp+='<table width="100%" border="0" cellpadding="5" cellspacing="2" class="text">';
		tmp +='<tr>';

		 label = XVal0(xmltest.getElementsByTagName('solve'));
	   if (label=='') label='Montru solvojn';

		tmp += '<td align="center" width="33%">';
		tmp += '<input value="'+label+'" type="button" onclick="recenicaSOLVE_ALL_5('+draw_id+','+(i)+')" style="width:100">';  //"Show All Answers"
		tmp += '</td>';

		 label = XVal0(xmltest.getElementsByTagName('reset'));
	   if (label=='') label='Malplenigu';

		tmp += '<td align="center" width="33%">';
		tmp += '<input value="'+label+'" type="button" onclick="RESET_TEST('+draw_id+','+(i)+')" style="width:100">';  //"Show All Answers"
		tmp += '</td>';

		tmp +='</tr>';
		tmp +='</table>';
		return tmp;
	}


function draw_buttons4(draw_id,i,xmltest)	//3 BUTTONS , i =  number of rows
    {
	   var label='';
	   var tmp ='';

	   tmp+='<table width="100%" border="0" cellpadding="5" cellspacing="2" class="text">';
	   tmp +='<tr>';

	   label = XVal0(xmltest.getElementsByTagName('solve'));
	   if (label=='') label='Montru solvojn';

	   tmp += '<td align="center" width="33%">';
	   tmp += '<input value="'+label+'" type="button" onclick="recenicaSOLVE_ALL_4('+draw_id+','+(i)+')" style="width:100">';  //"Show All Answers"
	   tmp += '</td>';



	   label = XVal0(xmltest.getElementsByTagName('checkout'));
	   if (label=='') label='Kontrolu';

	   tmp += '<td align="center" width="33%">';
	   tmp += '<input value="'+label+'" type="button" onhelp="alert('+"'help'"+')" onclick="check_ALL_4('+draw_id+','+(i)+')" style="width:100">';  //"Check for Answers" //style="font-weight:bolder;height:30;background:#cccccc"
	   tmp += '</td>';



	   label = XVal0(xmltest.getElementsByTagName('reset'));
	   if (label=='') label='Malplenigu';

	   tmp += '<td align="center" width="33%">';
	   tmp += '<input value="'+label+'" type="button" onclick="RESET_TEST('+draw_id+','+(i)+')" style="width:100">';  //"Show All Answers"
	   tmp += '</td>';



	   tmp +='</tr>';
	   tmp +='</table>';
	   return tmp;
	}


function draw_buttons3(draw_id,i,xmltest)	//3 BUTTONS , i =  number of rows
    {
	   var label='';
	   var tmp ='';
	   tmp+='<table width="100%" border="0" cellpadding="5" cellspacing="2" class="text">';
	   tmp +='<tr>';

	    label = XVal0(xmltest.getElementsByTagName('solve'));
	   if (label=='') label='Montru solvojn';

	   tmp += '<td align="center" width="33%">';
	   tmp += '<input value="'+label+'" type="button" onclick="recenicaSOLVE_ALL_3('+draw_id+','+(i)+')" style="width:100">';  //"Show All Answers"
	   tmp += '</td>';

	   label = XVal0(xmltest.getElementsByTagName('reset'));
	   if (label=='') label='Malplenigu';

	   tmp += '<td align="center" width="33%">';
	   tmp += '<input value="'+label+'" type="button" onclick="RESET_TEST('+draw_id+','+(i)+')" style="width:100">';  //"Show All Answers"
	   tmp += '</td>';

	   tmp +='</tr>';
	   tmp +='</table>';
	   return tmp;
	}

function draw_buttons2(draw_id,i,xmltest)	//3 BUTTONS
    {
	   var label='';
	   var tmp ='';
	   tmp+='<table width="100%" border="0" cellpadding="5" cellspacing="2" class="text">';
	   tmp +='<tr>';

	    label = XVal0(xmltest.getElementsByTagName('solve'));
	   if (label=='') label='Montru solvojn';

	   tmp += '<td align="center" width="50%">';
	   tmp += '<input value="'+label+'" type="button" onclick="recenicaSOLVE_ALL_2('+draw_id+','+(i)+')" style="width:100">';  //"Show All Answers"
	   tmp += '</td>';

	    label = XVal0(xmltest.getElementsByTagName('reset'));
	   if (label=='') label='Malplenigu';

	   tmp += '<td align="center" width="50%">';
	   tmp += '<input value="'+label+'" type="button" onclick="RESET_TEST('+draw_id+','+(i)+')" style="width:100">';  //"Reset"
	   tmp += '</td>';

	   tmp +='</tr>';
	   tmp +='</table>';
	   return tmp;
	}

function draw_gray_table5(xmlnode)
   {

	  var span_id='';
	  var tmp = "";
	  var i=0;
	  var j=0;
	  var boja = "#000000";
	   var id ='';
	   var tt = ' tt="'+draw_id+'" ';
	   var tabnext ='';
	   var broj_in = 0;
	   // velcina edita
	  var maxduzina = 10;
	  var sirina = 50;

	   var razmak=' ';
	   var ravnanje = "center;";
	   var next_nospace = false;

	  maxduzina=global_exchange+1;
	  var sirina = calculate_in_width(maxduzina,'');
	  var ii = 0;

	   tmp+='<table width="100%" border="0" cellpadding="5" cellspacing="2" class="text">';

	for (i=0;i<xmlnode.length;i++) //each sentence
	  {
	  tmp+=' <tr valign="middle">';

	   //LEFT
		xmlrecenica = xmlnode.item(i).getElementsByTagName("text")[0];
	   tmp +='      <td width="20" height="20" align="center">'+(i+1)+')</td>';
	   tmp +='<td width="50%" style="background-color: #f0f0f0;font-size: '+font_size_1+'">';


	       tmp+='<strong>'+xmlrecenica.firstChild.nodeValue+'</strong>';

	   tmp +='</td>';
	  //RIGHT
	   xmlrecenica = xmlnode.item(i).getElementsByTagName("translation")[0];
	   broj_in = 1;;
	   //alert('broj in ='+broj_in);
	   span_id = 'span_'+edit_id_begin+draw_id+'_'+(i+1);
	   td_id = 'td_'+edit_id_begin+draw_id+'_'+(i+1);
		//alert('['+span_id+']');
		//who want to optimize this? me not for sure....zeljkoni
	   tmp+='<td nowrap id="'+td_id+'" width="50%" style="background-color: #f5f5f5">';
	   tmp+='<span id="'+span_id+'" style="background-color: #f5f5f5;font-size: '+font_size_1+'">';



	 	 j=0;
			  //calculate sirina i maxduzina    (width & max_letter_width)
			  xml_cor = xmlrecenica.getElementsByTagName("corect");
			  maxduzina = 1;
			 for (ii=0;ii<xml_cor.length;ii++)
			  {
				 if (xml_cor.item(ii).firstChild.nodeValue.length>maxduzina) {maxduzina = xml_cor.item(ii).firstChild.nodeValue.length;}
			  }

		       col=1;
		       id = edit_id_begin+draw_id+'_'+(i+1)+'_'+col;
		  	  first_big=1; //Capital is Big


		  if (broj_in ==col) {tabnext =  edit_id_begin+draw_id+'_'+(i+2)+'_'+1;last=1;}
		                else {tabnext =  edit_id_begin+draw_id+'_'+(i+1)+'_'+(col+1);last=0;}
						//alert(maxduzina);


		    sirina='99%';
			maxduzina+=5;
			ravnanje = "left";


	     tmp+='<input testtype="5" type="text"  class="edit_gray_u" style="width:'+sirina+'; color:#000000;background-color: #f5f5f5;text-align: '+ravnanje+';"  maxlength="'+maxduzina+'"'+' boja='+boja+' value =""'+tt+' xx="'+(i+1)+'" yy="'+(col)+'"'+'" onKeyDown="e_down(this)" onKeyUp="e_up(this)"  onKeyPress="e_press(this)" onblur="e_blur(this)" onfocus="e_focus(this)" onchange="e_change(this)" id="'+id+'" tnext="'+tabnext+'" '+'capital="'+first_big+'" last="'+last+'">';



	tmp+='</span>&nbsp;';
	tmp+='</td>';
	tmp +='</tr>';
     }
    tmp+='</table>';
	draw_rows = i;
    return tmp;
   }
//******************************************************************************************

function make_row_red_readonly(test_no,row_no) //type = 1
  {
    var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
	var td_begin  = 'td_'+begin_id;
	var table_no = 1;
	var pok = document.getElementById(begin_id+table_no);
	var poktd = document.getElementById(td_begin+table_no);
	//alert(td_begin+table_no);
	 while (pok!=null)
   {
      pok.style.color = corect_color2;
	  pok.style.backgroundColor = test_red_color;
	  pok.readOnly = true;
	  if (poktd!=null) {
	   //alert('td');
	   poktd.style.backgroundColor = test_red_color;
	   }
     //alert(pok.value);  rec broj [table_no] u recenici
	 table_no++;
	 pok = document.getElementById(begin_id+table_no);
	 poktd = document.getElementById(td_begin+table_no);
   }
}
function make_row_red_readonly3(test_no,row_no)
{
   //blue2black_3(test_no,row_no);
   var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
	var span_begin  = 'span_'+edit_id_begin+test_no+'_'+row_no;
	var td_begin = 'td_'+edit_id_begin+test_no+'_'+row_no;
	var table_no = 1;
	var pok = document.getElementById(begin_id+table_no);
	var pokspan = document.getElementById(span_begin);
	var poktd = document.getElementById(td_begin);
	//alert(begin_id+table_no);
	if (pokspan!=null) {
		//alert(span_begin);
	   pokspan.style.backgroundColor = test_red_color;
	   }
	   if (poktd!=null) {
		//alert(span_begin);
	   poktd.style.backgroundColor = test_red_color;
	   }

	 while (pok!=null)
   {
      pok.style.color = corect_color2;
	  pok.style.backgroundColor = test_red_color;
	  pok.readOnly = true;
	 table_no++;
	 pok = document.getElementById(begin_id+table_no);
   }
}
function make_row_red_readonly2(test_no,row_no)
{
    var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
	var span_begin  = 'span_'+edit_id_begin+test_no+'_'+row_no;
	var table_no = 1;
	var pok = document.getElementById(begin_id+table_no);
	var poktd = document.getElementById(span_begin);
	//alert(begin_id+table_no);
	if (poktd!=null) {
		//alert(span_begin);
	   poktd.style.backgroundColor = test_red_color;
	   }
	//alert(pok.value);
	 while (pok!=null)
   {
      pok.style.color = corect_color2;
	 // pok.style.backgroundColor = test_red_color;
	  pok.style.backgroundColor = 'transparent';
	  pok.readOnly = true;
	  table_no++;
	  pok = document.getElementById(begin_id+table_no);
   }
}
//******************************************************************************************
function sadrzi(broj,wordnode) //this function should be used on many places to optimize code, later i will do this ...
{
  //broj is number of word in XMl
  var nasao = false;
  var j = 0;
  //alert(broj);
  while((!(nasao)) && (j<wordnode.length))
   {
      if (broj==wordnode.item(j).firstChild.nodeValue)
	    {nasao = true;}
	  j++;
   }
  //alert(nasao);
  return nasao;
}
function sadrzi_string(rec,wordnode) //this function should be used on many places to optimize code, later i will do this ...
{
  //rec is number of word in XMl
  var nasao = false;
  var j = 0;
  //alert(rec);
  while((!(nasao)) && (j<wordnode.length))
   {
      if (jednako(rec,wordnode.item(j).firstChild.nodeValue))
	    {nasao = true;}
	  j++;
   }
  // alert('izlaz');
  return nasao;
}
function recenicaOK(test_no,row_no,testtype) //test 1 & 2
{
 var i= 0;
 var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
 var table_id = new Array(30); //max 29 words per test, this can be optimized
 var table_no = 1;
 var postoje_sve_reci = true;
 var pronasao_se = false;
 //check 2 things, existing of words ,if this is ok then  check combination
 pok = document.getElementById(begin_id+table_no);
 //alert(begin_id+table_no);
 while (pok!=null)
   {
     //alert(pok.value); // rec broj [table_no] u recenici
	 table_id[table_no] = postoji_rec_id(pok.value,pok);
	// alert(table_id[table_no]);
	 table_no++;
	 pok = document.getElementById(begin_id+table_no);
   }
   table_no--;
 postoje_sve_reci = true;
 for (i=1;i<=table_no;i++)
   {
     if (table_id[i]==-1) postoje_sve_reci=false;
   }
   //alert(postoje_sve_reci);
   if (postoje_sve_reci)
    {
	 if (testtype=="1")
	 {
	 var xmlpatterns =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("corect")[0].getElementsByTagName("pattern");//.item(kolona_no-1).getElementsByTagName("word");
	 var pattern_id = 0;
	 //alert('broja paterna '+xmlpatterns.length);
  ///sad dolazi onaj zajeban deo kada treba da prodje kroz kombinacije
      while ((!(pronasao_se))&&(pattern_id<xmlpatterns.length))   //while (nije se pronasao u nekom) i (ima jos patterna)
          {

		 // alert(pattern_id);
		 //svaka kolona (ako je multi, onda proverava u cugu sve pod-multi, tj 2. koloncice sa paternom

		  xmlkolone = xmlpatterns.item(pattern_id).getElementsByTagName("part");
		  kol_id = 0;
		  red_ok = true;
		  i=0;
	      while ((i<xmlkolone.length) && (red_ok))
		    {
			  //alert('part');
			  multik = xmlkolone.item(i).getElementsByTagName("multi");
			  if (multik.length==0)
			    {
			     //alert('kolona');
				 kol_id++;
				 kolona = xmlkolone.item(i).getElementsByTagName("word");
				 nasao = false;
				 k = 0;
				 while ((k<kolona.length) && (!(nasao)))
				 {
				   if (kolona.item(k).firstChild.nodeValue==table_id[kol_id])
				    {
					  nasao=true;
					  //alert(kol_id+' '+table_id[kol_id]+' nasao '+ kolona.item(k).firstChild.nodeValue);
					}
				   k++;
				 } //while
				 if (nasao==false) {red_ok=false;}
			    }
			else{
			      for (j=0;j<multik.length;j++) //max 2
				    {
					 kol_id++;
					 kolona = multik.item(j).getElementsByTagName("word");
					 nasao = false;
				      k = 0;
				      while ((k<kolona.length) && (!(nasao)))
				       {

				        if (kolona.item(k).firstChild.nodeValue==table_id[kol_id])
				          {
					       nasao=true;
					       //alert(kol_id+' '+table_id[kol_id]+' nasao '+ kolona.item(k).firstChild.nodeValue);
					      }
				       k++;
				   } //while
				 if (nasao==false) {red_ok=false;}
				  } //for
			    } //else
				i++;
			}     //every column
		  //provera da li upisana rec sadrzi u patternu u odgovarajucem delu part
		   //kolona = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words/part").item(kolona_no-1).getElementsByTagName("multi").item(multi).getElementsByTagName("word");
	        pronasao_se = red_ok;
			pattern_id++;

	  	     }	  //every pattern
		}	//if  testtype == 1
		else  if (testtype =="2")
		 {
		// alert('yy3');
		  var xmlwords =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("corect")[0].getElementsByTagName("sentence");
		   k = 1;
		   //alert(pronasao_se);
		   var ok2 = (!(pronasao_se));  //i made this so stupid, because there is some bug
		   while ((ok2)&&(k<=table_no))
		    {
			   //	alert(xmlwords.length);
			  //alert(xmlwords.item(row_no-1).getElementsByTagName("in").item(k-1).getElementsByTagName("word").length);
			  if (!(sadrzi(table_id[k], xmlwords.item(row_no-1).getElementsByTagName("in").item(k-1).getElementsByTagName("word")))) {ok2=false;}
			  k++;
			}
			pronasao_se = ok2;
		 }
   	 } //if postoje_reci
	 return (pronasao_se);
 } //f

function recenicaOK_3(test_no,row_no)  //test 3
{
	//for each edit, check status
	var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
 	var xml_in =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("data")[0].getElementsByTagName("sentence").item(row_no-1).getElementsByTagName("right")[0].getElementsByTagName("in");
    var   k = 0;
    var ok2 = true;
		   while ((ok2)&&(k<xml_in.length))
		    {
			  pok = document.getElementById(begin_id+(k+1));
			  if (!(sadrzi_string(pok.value, xml_in.item(k).getElementsByTagName("corect")))) {ok2=false;}
			  k++;
			}
	return ok2;
}
function recenicaOK_4(test_no,row_no)  //test 4
{
   var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
   var xml_in =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("data")[0].getElementsByTagName("sentence").item(row_no-1).getElementsByTagName("left")[0].getElementsByTagName("in");
    var   k = 0;
    var ok2 = true;
		   while ((ok2)&&(k<xml_in.length))///for each edit, check status of edit
		    {
			  pok = document.getElementById(begin_id+(k+1));
			   word_id = postoji_rec_id(pok.value,pok);
			   //alert(xml_in.item(k).getElementsByTagName("corect").item(0).firstChild.nodeValue);
			  if (!(sadrzi(word_id, xml_in.item(k).getElementsByTagName("corect")))) {ok2=false;}
			  k++;
			}
	return ok2;
}


function recenicaSOLVE_2(test_no,row_no)  //test 4
{
 //alert(row_no);
   var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
   var xml_in =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("corect")[0].getElementsByTagName("sentence").item(row_no-1).getElementsByTagName("in");
    var   k = 0;
	var  rec = "";
    var word_id;
		   while ((k<xml_in.length))///for each edit, check status of edit
		    {
			  pok = document.getElementById(begin_id+(k+1));
			   if (!pok.readOnly)
			   {
			   //alert('sranje');
			    word_id =xml_in.item(k).getElementsByTagName("word").item(0).firstChild.nodeValue; //first corect answer word_id from <words> in xml
				//alert(word_id);
			    xmlwords =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words");
				rec = xmlwords[xmlwords.length-1].getElementsByTagName("word").item(word_id-1).firstChild.nodeValue;
			    pok.value  = rec;
				podesiboju(pok);
				}
			    k++;
			}
 // make_row_red_readonly3(test_no,row_no);
}
function recenicaSOLVE_ALL_2(test_no,row_numbers)
{
  //alert(row_numbers);
  for (i=1;i<=row_numbers;i++) {
        recenicaSOLVE_2(test_no,i);
		}
}

function recenicaSOLVE_3(test_no,row_no)  //test 3
{
   var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
   var xml_in =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("data")[0].getElementsByTagName("sentence").item(row_no-1).getElementsByTagName("right")[0].getElementsByTagName("in");
   var k = 0;
   var rec = "";
   var word_id;
		   while ((k<xml_in.length))///for each edit, check status of edit
		    {
			  pok = document.getElementById(begin_id+(k+1));
			   if (!pok.readOnly)
			   {
			    word_id =xml_in.item(k).getElementsByTagName("corect").item(0).firstChild.nodeValue; //first corect answer word_id from <words> in xml
			    rec  = word_id;
			    pok.value  = rec;
				podesiboju(pok);
				}
			    k++;
			}
 // make_row_red_readonly3(test_no,row_no);
}
function recenicaSOLVE_ALL_3(test_no,row_numbers)
{
  for (i=1;i<=row_numbers;i++) {
        recenicaSOLVE_3(test_no,i);
		}
}
function recenicaSOLVE_4(test_no,row_no)  //test 4
{
   var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
   var xml_in =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("data")[0].getElementsByTagName("sentence").item(row_no-1).getElementsByTagName("left")[0].getElementsByTagName("in");
    var   k = 0;
	var  rec = "";
    var word_id;
		   while ((k<xml_in.length))///for each edit, check status of edit
		    {
			  pok = document.getElementById(begin_id+(k+1));
			   if (!pok.readOnly)
			   {
			    word_id =xml_in.item(k).getElementsByTagName("corect").item(0).firstChild.nodeValue; //first corect answer word_id from <words> in xml
			    xmlwords =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words");
				rec = xmlwords[xmlwords.length-1].getElementsByTagName("word").item(word_id-1).firstChild.nodeValue;


			    pok.value  = rec;
				podesiboju(pok);
				}
			    k++;
			}
 // make_row_red_readonly3(test_no,row_no);
}
function recenicaSOLVE_ALL_4(test_no,row_numbers)
{
  for (i=1;i<=row_numbers;i++) {
        recenicaSOLVE_4(test_no,i);
		}
}
function check_ALL_4(test_no,row_numbers)
  {
    for (i=1;i<=row_numbers;i++) {
	      if (recenicaOK_4(test_no,i))
			 {
		         make_row_red_readonly3(test_no,i);
			 }
		  }
	}
function recenicaSOLVE_5(test_no,row_no)  //test 4
{

   var begin_id = edit_id_begin+test_no+'_'+row_no+'_';
   var xml_in =  xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("data")[0].getElementsByTagName("sentence").item(row_no-1).getElementsByTagName("translation");
    var   k = 0;
	var  rec = "";
    var word_id;
		   while ((k<xml_in.length))///for each edit, check status of edit
		    {
			  pok = document.getElementById(begin_id+(k+1));
			   if (!pok.readOnly)
			   {
			    word_id =xml_in.item(k).getElementsByTagName("corect").item(0).firstChild.nodeValue; //first corect answer word_id from <words> in xml
			   // rec  = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words/word").item(word_id-1).firstChild.nodeValue;

			   rec  = word_id;
			    pok.value  = rec;
				podesiboju(pok);
				}
			    k++;
			}
 // make_row_red_readonly3(test_no,row_no);
}
function recenicaSOLVE_ALL_5(test_no,row_numbers)
{
  for (i=1;i<=row_numbers;i++) {
        recenicaSOLVE_5(test_no,i);
		}
}

//***************************************************************************
function init_vars()
{
 XML_FILE = ""; //Putanja ka xml dokumentu
 maindiv;
//var edit_id_begin = 'edit'+(rnd(899)+100)+'_';
 edit_id_begin = 'edit17'+'_';
 draw_id =0;
 position=-10;
 test_red_color = '#95FF98'; //"#10EC10";//'#FFD9D9'; red became green :)
 plava ='; color:#0000FF';
 global_exchange=0;
}
function start_test(src,XML_FILE)
 {
   maindiv = document.getElementById(src);
   initXML(XML_FILE);
   }
 function start_after_loadXML()
 {
    try {
        //if (xmlDoc.firstChild.nodeName) var nomo = xmlDoc.firstChild.nodeName;
        //if (XVal0(xmlDoc.getElementsByTagName('maintitle')))
   //alert('xmlDoc '+xmlDoc.childNodes.length);

//   alert(xmlDoc);
   //alert('xmlDoc '+xmlDoc.firstChild.nodeName);
   init_vars();
   var tmp ='';
   var html = '';
   //alert(xmlDoc.getElementsByTagName('maintitle').length);

   var naslov =  XVal0(xmlDoc.getElementsByTagName('maintitle'));
  // alert(naslov);
   if (naslov!='')
    {
     tmp += '<p><span class="main_header">'+naslov+'</span></p><br>';
	 }
    testovi = xmlDoc.getElementsByTagName("test");
   //alert(testovi.length);
   for (i=0;i<testovi.length;i++)
	      {
	        testic = testovi.item(i);
			//alert('debug '+i);
			draw_id++;
			tmp += '<div test_no="'+draw_id+'" id="test_div_'+draw_id+'">';
			//alert(draw_id+" "+(i+1));
			//alert("TESTO: " + testic);
			tmp += draw_test(testic);//+'<br>';
			tmp += '</div>';
			//alert('debug '+i);
	      }
    } catch(e) {
        setTimeout(function() { start_after_loadXML() }, 250);
        return false;
    }
   maindiv.innerHTML = tmp;

   //alert('started');
 }
//****************************************

 function samo_pocinju_isto(manja,veca)
   {
     var q  = false;

	  if (manja.length<veca.length)
	     {
		   var s1 = manja.toUpperCase();
	       var s2 = veca.toUpperCase();
		   var s3 = s2.substr(0,s1.length);

		if (s1==s3) {q = true;}
		 }

	return q;
   }
 function jednako(s1,s2)
    {
	 var q=false;
	 //alert(s1+' '+s2);
	 if (js_trim((s1.toUpperCase()))==js_trim((s2.toUpperCase()))) {q=true;}
	  return q;
	}
function calculate_in_width(max_text_size,align)
	 {
	   var sirina = "";
	   sirina = max_text_size*8+4;
	   //extra setings
	   if  (max_text_size>5) {sirina = sirina * 0.85;}
	   return sirina;
	 }
function tab(id)
   {
    //alert('skoci na '+id);
   if (document.getElementById(id)!=null)
   {
    if (id!='')
	{
	if (document.getElementById(id).readOnly) tab(document.getElementById(id).getAttribute('tnext'))
     else {
	       //alert('fokusiraj');
	       //document.getElementById(id).focus();
	       setTimeout("document.getElementById('"+id+"').focus()",200);
	    }
	 }
	 }
   }

function e_focus(caller)
	{
	    if (!(caller.readOnly))
		caller.style.backgroundColor=select_input_color;
   	}
function e_blur(caller)
	{
		caller.style.backgroundColor='transparent';
	}
function e_press(caller)
     {
	   //var  x = String.fromCharCode(event.keyCode);
		//document.all['ee'].innerHTML+=Input.name+' onpress ['+x+']<br>';
		 podesiboju(caller);
		 /* if (event.keyCode==13)
		   {
		    event.keyCode=0;
		    //tab(Input.getAttribute('tnext'));
		   }
		   */
    }
function e_change(caller)
   {
      podesiboju(caller);
   }
function e_up(caller)
     {
		//alert(caller.value);
	    podesiboju(caller);
    }
	function e_down(caller)
     {
	 // alert('id: '+caller.getAttribute('id'));

	   if (BWie){
	   //alert(event.keyCode);
		if (event.keyCode==13)
		   {
			event.keyCode = 0;
		    tab(caller.getAttribute('tnext'));
		   }
		  // if (event.keyCode==8)
		   //{
			//event.keyCode = 0;
		    //tab(caller.getAttribute('tnext'));
		  // }
		   }
		   else //if (BWns)
		   {
		       setTimeout("NSKey('"+caller.getAttribute('tnext')+"')",100);
		   }
    }
	function NSKey(jumpid)
	{

	    if (keyCode==13)
		 {
			keyCode = 0;
			//eee.which = 0;
		    tab(jumpid);
		   }
	}
function postoji_rec_id(rec,id)//child of  postoji_rec_big,
	 {
	 var multi_column = -1;
	 if (id.getAttribute('mm')!=null) multi_column=id.getAttribute('mm');
	 var position =  postoji_rec_big(rec,id.getAttribute('tt'),id.getAttribute('xx'),id.getAttribute('yy'),multi_column,id.getAttribute('testtype'),true);
	  return position;
	 }
function postoji_rec(rec,test_no,kolona_no,yy,multi,testtype)//child of  postoji_rec_big
	 {

	  var tmp = postoji_rec_big(rec,test_no,kolona_no,yy,multi,testtype,false);
	  return tmp;
	 }
function postoji_rec_big(rec,test_no,kolona_no,yy,multi,testtype,return_ID)
	{
		var q = '';
		position = -1;
		if (testtype=="1")
			{
	    		if (multi==-1)
					{
		  	  	  		kolona = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words")[0].getElementsByTagName("part").item(kolona_no-1).getElementsByTagName("word");
					}
				else
					{
						kolona = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words")[0].getElementsByTagName("part").item(kolona_no-1).getElementsByTagName("multi").item(multi).getElementsByTagName("word");
					}
			}
		else if(testtype=="2")
			{
				xmlwords = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName('words');
				kolona = xmlwords[xmlwords.length-1].getElementsByTagName('word');
			}
		else if (testtype=="3")
			{
				kolona = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("data")[0].getElementsByTagName("right").item(kolona_no-1).getElementsByTagName("in").item(yy-1).getElementsByTagName("corect");
			}
		else if (testtype=="4")
			{
				xmlwords = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName('words');
				kolona = xmlwords[xmlwords.length-1].getElementsByTagName('word');
			}
		else if (testtype=="5")
			{
				kolona = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("data")[0].getElementsByTagName("translation").item(kolona_no-1).getElementsByTagName("corect");
		   	}
		//BEGIN rec, kolona

		for (j=0;j<kolona.length;j++)
			{
				if (jednako(rec,XVal(kolona.item(j))))
					{
						q=XVal(kolona.item(j));
						position = j+1;
			 		}
			}
		if ((q=='')&& (jednako(rec,'Zeljko'))) q='Zeljko';

	   //END rec,kolona
		if (return_ID)
			{
				return position;
			}
		else
			{
				return q;
			}
	  }
function postoji_slicna_manja_rec(rec,test_no,kolona_no,multi,testtype)
		  {
	   var q = false;
	   var j=0;
	   if (testtype=="1")
	   {
	    if (multi==-1)
		{
		      kolona = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words")[0].getElementsByTagName("part").item(kolona_no-1).getElementsByTagName("word");
		}
		else {
		 kolona = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words")[0].getElementsByTagName("part").item(kolona_no-1).getElementsByTagName("multi").item(multi).getElementsByTagName("word");
		}
		}
		else if(testtype=="2"){
		 // kolona = xmlDoc.getElementsByTagName("test").item(test_no-1).getElementsByTagName("words").getElementsByTagName("word");

		}
		//BEGIN rec, kolona
		for (j=0;j<kolona.length;j++)
		   {
			 if (samo_pocinju_isto(rec,XVal(kolona.item(j)))) { q=true;}

		   }
	   //END rec,kolona

	   return q;
	  }
	  function js_trim(s)
	    {
			while (s.substr(0, 1)==' ')
			{
			    s = s.substr(1,s.length-1);
			  }
			 while (s.substr(s.length-1, 1)==' ')
			  {
			    s = s.substr(0,s.length-1);
			  }
			  return s;
		}
	 function capital_big(s)
	  {
	    var first = s.substr(0, 1);
		var rest = s.substr(1,s.length-1);
		first = first.toUpperCase();
		s = first+rest;
	    return s;
	  }
	   function to_esperanto(s)
	  {
	    s = replace_all('cx',String.fromCharCode(265),s);
	    s = replace_all('gx',String.fromCharCode(285),s);
	    s = replace_all('hx',String.fromCharCode(293),s);
	    s = replace_all('jx',String.fromCharCode(309),s);
	    s = replace_all('sx',String.fromCharCode(349),s);
	    s = replace_all('ux',String.fromCharCode(365),s);

	    s = replace_all('Cx',String.fromCharCode(264),s);
	    s = replace_all('Gx',String.fromCharCode(284),s);
	    s = replace_all('Hx',String.fromCharCode(292),s);
	    s = replace_all('Jx',String.fromCharCode(308),s);
	    s = replace_all('Sx',String.fromCharCode(348),s);
	    s = replace_all('Ux',String.fromCharCode(364),s);

		s = replace_all('cX',String.fromCharCode(265),s);
	    s = replace_all('gX',String.fromCharCode(285),s);
	    s = replace_all('hX',String.fromCharCode(293),s);
	    s = replace_all('jX',String.fromCharCode(309),s);
	    s = replace_all('sX',String.fromCharCode(349),s);
	    s = replace_all('uX',String.fromCharCode(365),s);

	    s = replace_all('CX',String.fromCharCode(264),s);
	    s = replace_all('GX',String.fromCharCode(284),s);
	    s = replace_all('HX',String.fromCharCode(292),s);
	    s = replace_all('JX',String.fromCharCode(308),s);
	    s = replace_all('SX',String.fromCharCode(348),s);
	    s = replace_all('UX',String.fromCharCode(364),s);


		return s;
	  }
	   function replace_all(olds,news,s)
	  {
	     var poz;
		 var slen = olds.length;

		 var s1;
		 var s2;
	      poz = s.indexOf(olds);
		 while (poz>=0)
		  {
		    var blen = s.length;
		    s1 = s.substr(0,poz);
			s2 = s.substr(poz+slen,blen-slen-poz);
			s = s1 + news +s2;
			poz = s.indexOf(olds);
			//alert(s);
		  }
		 return s;
	  }

function podesiboju(Input) //podesava boju i pravi esperanto reci, skace, proverava tacnost i tako to;
	{
		//alert('podesiboju');
		var te = replace_all('  ',' ',to_esperanto(Input.value)); //make esperanto and remove double spaces
		if (te!=Input.value) Input.value=te;
		multi_column = -1;
		if (Input.getAttribute('mm')!=null) multi_column=Input.getAttribute('mm');
		var rr = postoji_rec(Input.value,Input.getAttribute('tt'),Input.getAttribute('xx'),Input.getAttribute('yy'),multi_column,Input.getAttribute('testtype'));
		//alert(rr);
		if (rr!='')
			{
				if (Input.getAttribute('testtype')=="1")
					{
						if (recenicaOK(Input.getAttribute('tt'),Input.getAttribute('yy'),Input.getAttribute('testtype')))
							{
								/*
								if (!(postoji_slicna_manja_rec(Input.value,Input.getAttribute('tt'),Input.getAttribute('xx'),multi_column,Input.getAttribute('testtype'))))
									{
										tab(Input.getAttribute('tnext'));
									}
								*/

								make_row_red_readonly(Input.getAttribute('tt'),Input.getAttribute('yy'));
								tab(Input.getAttribute('tnext'));
								Input.blur();
							}
					}//  if (1)

				else  if (Input.getAttribute('testtype')=="2")
					{
						if (recenicaOK(Input.getAttribute('tt'),Input.getAttribute('xx'),Input.getAttribute('testtype')))
							{
		      					// if (!(postoji_slicna_manja_rec(Input.value,Input.getAttribute('tt'),Input.getAttribute('xx'),multi_column,Input.getAttribute('testtype'))))  {tab(Input.getAttribute('tnext'));}
								make_row_red_readonly2(Input.getAttribute('tt'),Input.getAttribute('xx'));
								tab(Input.getAttribute('tnext'));
								Input.blur();
							}
					}//  if (2)

				else  if (Input.getAttribute('testtype')=="3")
					{
						if (recenicaOK_3(Input.getAttribute('tt'),Input.getAttribute('xx')))
							{
								make_row_red_readonly3(Input.getAttribute('tt'),Input.getAttribute('xx'));
								tab(Input.getAttribute('tnext'));
								Input.blur();
							}
					} //  if (3)
				else  if (Input.getAttribute('testtype')=="4")
					{ //ukljuciti automatsku proveru za tip 4 po potrebi

			   /*
						if (recenicaOK_4(Input.getAttribute('tt'),Input.getAttribute('xx')))
							{
								make_row_red_readonly3(Input.getAttribute('tt'),Input.getAttribute('xx'));
								tab(Input.getAttribute('tnext'));
								Input.blur();
							}
			 */
					} //  if (4)

				else  if (Input.getAttribute('testtype')=="5")
					{
						//if (recenicaOK_3(Input.getAttribute('tt'),Input.getAttribute('xx')))
							{
								make_row_red_readonly3(Input.getAttribute('tt'),Input.getAttribute('xx'));
								tab(Input.getAttribute('tnext'));
								Input.blur();
							 }
					} //  if (5)
				//alert(brisi+Input.style.color+'|'+Input.getAttribute('boja'));

				// #################

				if ((Input.style.color==Input.getAttribute('boja')) ) //ako je obicne boje
					{
					//alert(Input.name+'   '+Input.getAttribute('tnext'));
						if (Input.getAttribute('testtype')=="1")
		    				{
								//;
		    					if (!(postoji_slicna_manja_rec(Input.value,Input.getAttribute('tt'),Input.getAttribute('xx'),multi_column,Input.getAttribute('testtype'))))
									{
										//alert('skok');
										tab(Input.getAttribute('tnext'));
									}
							} //if (1)

						else if ((Input.getAttribute('testtype')=="2") && ((Input.readOnly==true)||(!(Input.last=="1"))))
							{
			 //Removed Jumping from part = 2 because 1000000000 things, will be done later
			 /*
			 var xmlwords =  xmlDoc.getElementsByTagName("test").item(Input.getAttribute('tt')-1).getElementsByTagName("corect/sentence");
			 //alert('provera Ho &So');
		     if (sadrzi(postoji_rec_id(Input.value,Input), xmlwords.item(Input.getAttribute('xx')-1).getElementsByTagName("in").item(Input.getAttribute('yy')-1).getElementsByTagName("word"))) //da li je rec tacna
			 {
			     //alert('TAB Ho & So');
				 Input.style.color=corect_color;
				 color_off = true;
				 if (!(postoji_slicna_manja_rec(Input.value,Input.getAttribute('tt'),Input.getAttribute('xx'),multi_column,Input.getAttribute('testtype'))))
			        {
					   tab(Input.getAttribute('tnext'));
					}
			  }
			  */
							} //if (2)
						else if (Input.getAttribute('testtype')=="3")
							{
			 //iskljuceno automatsko skakanje  za tip 3
			  // tab(Input.getAttribute('tnext'));
							}  //if 3
						else if (Input.getAttribute('testtype')=="4")
							{
			   //iskljuceno automatsko skakanje koje ne radi za tip 4
			   //tab(Input.getAttribute('tnext'));
			   				}
						else if (Input.getAttribute('testtype')=="5")
							{
								tab(Input.getAttribute('tnext'));
							}
		  //tab(Input.next);

					} // if (Input.style.color==Input.getAttribute('boja'))

		  //alert(Input.getAttribute('capital'));
				if (Input.getAttribute('capital') == "1") rr = capital_big(Input.value);
				Input.value = rr;
				if (Input.readOnly!=true)  // (!)  != true ?!? , stupid JS
					{
						Input.style.color=word_corect_color;
						//tab(Input.getAttribute('tnext'));

					}
			} //sadrzi
		else
			{
		  		Input.style.color= Input.getAttribute('boja'); //obicna boja
			}
	}
//*********** IMPORT CODE FROM VORTARO.JS, i just changed function names to avoid duplicate definiton of function with same name

function vo_translate(vorto) {
	if (parent.vortaro) {
	    window.loko.style.cursor = "default";
		var elektilo = parent.vortaro.document.forms[0].direkto;
		var lingvoParo = elektilo.options[elektilo.selectedIndex].value;
		if (lingvoParo.substring(0, 2) == "eo") {
			// en ordo
		}
		else {
			// shanghu la ordon
			lingvoParo = "eo" + lingvoParo.substring(0, 2);
		}
		parent.vortaro.location="/vortaro/vortaro.php?direkto=" + lingvoParo + "&vorto=" + vorto;
	}
}

function vo_mouseover(loko) {
    if (parent.vortaro) {
	    window.loko=loko;
		window.fonKoloro = loko.style.backgroundColor;
	    window.deiraTekstOrnamo = loko.style.textDecoration;
	    //loko.style.backgroundColor = "#BBFFBB";
		loko.style.backgroundColor = "rgb(255,255,143)";
	    loko.style.textDecoration = "underline";
	    loko.style.cursor = "help";
	}
}

function vo_mouseout(loko) {
    if (parent.vortaro) {
	    window.loko=loko;
		loko.style.backgroundColor = window.fonKoloro;
	    loko.style.textDecoration = window.deiraTekstOrnamo;
	}
}

