// remote scripting library
		// (c) copyright 2005 modernmethod, inc
		var sajax_debug_mode = false;
		var sajax_request_type = "POST";
		var sajax_target_id = "";
		var sajax_failure_redirect = "";
		
		function sajax_debug(text) {
			if (sajax_debug_mode)
				alert(text);
		}
		
 		function sajax_init_object() {
 			sajax_debug("sajax_init_object() called..")
 			
 			var A;
 			
 			var msxmlhttp = new Array(
				'Msxml2.XMLHTTP.6.0',
				'Msxml2.XMLHTTP.3.0',
				'Msxml2.XMLHTTP',
				'Microsoft.XMLHTTP');
			for (var i = 0; i < msxmlhttp.length; i++) {
				try {
					A = new ActiveXObject(msxmlhttp[i]);
				} catch (e) {
					A = null;
				}
			}
 			
			if(!A && typeof XMLHttpRequest != "undefined")
				A = new XMLHttpRequest();
			if (!A)
				sajax_debug("Could not create connection object.");
			return A;
		}
		
		var sajax_requests = new Array();
		
		function sajax_cancel() {
			for (var i = 0; i < sajax_requests.length; i++) 
				sajax_requests[i].abort();
		}
		
		function sajax_do_call(func_name, args) {

			var i, x, n;
			var uri;
			var post_data;
			var target_id;
			
			sajax_debug("in sajax_do_call().." + sajax_request_type + "/" + sajax_target_id);
			target_id = sajax_target_id;
			if (typeof(sajax_request_type) == "undefined" || sajax_request_type == "") 
				sajax_request_type = "GET";
			
			uri = "/services/ajax.php";
			if (sajax_request_type == "GET") {
			
				if (uri.indexOf("?") == -1) 
					uri += "?rs=" + escape(func_name);
				else
					uri += "&rs=" + escape(func_name);
				uri += "&rst=" + escape(sajax_target_id);
				uri += "&rsrnd=" + new Date().getTime();
				
				for (i = 0; i < args.length-1; i++) 
					uri += "&rsargs[]=" + escape(args[i]);

				post_data = null;
			} 
			else if (sajax_request_type == "POST") {
				post_data = "rs=" + escape(func_name);
				post_data += "&rst=" + escape(sajax_target_id);
				post_data += "&rsrnd=" + new Date().getTime();
				
				for (i = 0; i < args.length-1; i++) 
					post_data = post_data + "&rsargs[]=" + escape(args[i]);
			}
			else {
				alert("Illegal request type: " + sajax_request_type);
			}
			
			x = sajax_init_object();

			if (x == null) {
				if (sajax_failure_redirect != "") {
					location.href = sajax_failure_redirect;
					return false;
				} else {
					sajax_debug("NULL sajax object for user agent:\n" + navigator.userAgent);
					return false;
				}
			} else {
				x.open(sajax_request_type, uri, true);

				// window.open(uri);
				
				sajax_requests[sajax_requests.length] = x;
				
				if (sajax_request_type == "POST") {
					x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
					x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				}
			
				x.onreadystatechange = function() {
					if (x.readyState != 4) 
						return;

					var status;
					var data;
					var txt = x.responseText.replace(/^\s*|\s*$/g,"");
					status = txt.charAt(0);
					data = txt.substring(2);

					if (status == "") {
						// let's just assume this is a pre-response bailout and let it slide for now
					} else if (status == "-") 
						alert("Error: " + data);
					else {
						if (target_id != "") 
							document.getElementById(target_id).innerHTML = eval(data);
						else {
							try {
								var callback;
								var extra_data = false;								
								if (typeof args[args.length-1] == "object") {
									callback = args[args.length-1].callback;
									extra_data = args[args.length-1].extra_data;
								} else {
									callback = args[args.length-1];
								}								

								callback(eval(data), extra_data);
							} catch (e) {
								//sajax_debug("Caught error " + e + ": Could not eval " + data );
								alert("Caught error " + e + ": Could not eval " + data );
							}
						}
					}
				}
			}
			
			sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
			x.send(post_data);
			sajax_debug(func_name + " waiting..");
			delete x;
			return true;
		}


//

function addslashes(str) {
str=str.replace(/\\/g,'\\\\');
str=str.replace(/\0/g,'\\0');
str=str.replace(/\'/g,'\\\'');
str=str.replace(/\"/g,'\\"');
return str;
}

function xaction(commands) {
   try {
     eval(commands);
   } catch (e) {
     alert('Error:'+e.message);
     alert(commands);
   }
}

function in_array(str,arr) {
 res = -1;
 for (var i=0;i<arr.length;i++) {
   if (arr[i]==str) {
     res = i;
     i=arr.length;
   }
 }
 return res;
}

function del_from_array(str,arr) {
 res = -1;
 newarr = Array();
 for (var i=0;i<arr.length;i++) {
   if (arr[i]!=str) newarr.push(arr[i]);
 }
 return newarr;
}

function add_to_array(str,arr) {
  lastid=arr.length;
  arr[lastid]=str;
  return lastid;
}

function add_unique_to_array(str,arr) {
  if (in_array(str,arr)==-1) {
     arr.push(str);
     lastid=arr.length-1;
     return lastid;
  }else{
     return -1;
  }
}

function add_to_top_array(str,arr) {
  lastid=arr.length;
  for (i=lastid; i>0;i--) {
    arr[i]=arr[i-1];
  }
  arr[0]=str;
  return lastid;
}


function add_unique_to_top_array(str,arr) {
  var m;
  if (in_array(str,arr)==-1) {
     m = add_to_top_array(str,arr);
     return m;
  }else{
     return -1;
  }
}

var vqlist = Array();
var kqlist = Array();

var vmlist = Array();
var kmlist = Array();

var vrlist = Array();
var krlist = Array();

var data_e = Array();
var velist = Array();
var kelist = Array();


function get_questions(img1, img2) {
  clear_q(img2);
  var frm = document.forms['frm'];
  var s = frm.subject_id[frm.subject_id.selectedIndex].value;
  var c = frm.elements['class'][frm.elements['class'].selectedIndex].value;
  var q = frm.elements['number_quarter'][frm.elements['number_quarter'].selectedIndex].value;
  var v = frm.elements['variant'][frm.elements['variant'].selectedIndex].value;
  if (s.length>0 && c.length>0) {
    if (is_sch()) { 
      update_div('qall','Загрузка...');
    }else{
      update_div('qall','Loading...');
    }
    sajax_do_call('getQuestions',Array(s, c, q, v, img1, img2, xaction));
  }
}

function add_all_questions(img1, img2) {
  var frm = document.forms['frm'];
  var s = frm.subject_id[frm.subject_id.selectedIndex].value;
  var c = frm.elements['class'][frm.elements['class'].selectedIndex].value;
  var q = frm.elements['number_quarter'][frm.elements['number_quarter'].selectedIndex].value;
  var v = frm.elements['variant'][frm.elements['variant'].selectedIndex].value;
  sajax_do_call('addQuestions',Array(s, c, q, v, img1, img2, xaction));
}


var current_students_groups='';

function get_groups(img1, img2, img3, img4, img5) {
  var frm = document.forms['frm'];
  if (is_sch()) {
    update_div('rall','Загрузка...');
  }else{
    update_div('rall','Loading...');
  }
  sajax_do_call('getGroups',Array(img1, img2, img3, img4, img5, xaction));
}

function getStudents(school_id, img1, img2, img3, img4, img5) {
  var frm = document.forms['frm'];
  if (is_sch()) { 
    update_div('rall','Загрузка...');
  }else{
    update_div('rall','Loading...');
  }
  sajax_do_call('getStudents',Array(school_id, img1, img2, img3, img4, img5, xaction));
}

function getClasses(school_id, img1, img2, img3, img4, img5) {
  var frm = document.forms['frm'];
  if (is_sch()) { 
    update_div('rall','Загрузка...');
  }else{
    update_div('rall','Loading...');
  }
  sajax_do_call('getClasses',Array(school_id, img1, img2, img3, img4, img5, xaction));
}


function getReceivers(img1, img2, img3, img4, img5) {
  var frm = document.forms['frm'];
  var frm = document.forms['frm'];
  if (frm.receivers[frm.receivers.selectedIndex].value=='Postponed') {
    current_students_groups='Postponed';
    if (is_sch()) { 
      update_div('rall','Загрузка...');
    }else{
      update_div('rall','Loading...');
    }
    sajax_do_call('getPostponedStudents',Array(frm.apply_id.value, img1, img2, img3, img4, img5, xaction));
  } else if (frm.receivers[frm.receivers.selectedIndex].value=='Groups') {
     if (current_students_groups!='Groups') {
       clear_r(img1, img2, img3, img4, img5);
       clear_e(img1, img2, img3, img4, img5);
       clear_m(img2);
       update_div('exlist_all','&nbsp;');
       current_students_groups='Groups';
     }
     update_div('sfilter','<b>Select from list</b>'); 
     if (is_sch()) { 
       update_div('sfilter','<b>Виберіть із списку</b>'); 
     }
     get_groups(img1, img2, img3, img4, img5);
  }else if (frm.receivers[frm.receivers.selectedIndex].value=='Classes'){
    if (current_students_groups!='Classes') {
      clear_r(img1, img2, img3, img4, img5);
      clear_e(img1, img2, img3, img4, img5);
      clear_m(img2);
      update_div('exlist_all','&nbsp;');
      update_div('rall','&nbsp;');
      current_students_groups='Classes';
      sajax_do_call('getSchools',Array(img1, img2, img3, img4, img5, xaction));
    }else{
      getClasses(frm.school_id[frm.school_id.selectedIndex].value,img1, img2, img3, img4, img5);
    }
  }else{
    if (current_students_groups!='Students') {
      clear_r(img1, img2, img3, img4, img5);
      clear_e(img1, img2, img3, img4, img5);
      clear_m(img2);
      update_div('exlist_all','&nbsp;');
      update_div('rall','&nbsp;');
      current_students_groups='Students';
      sajax_do_call('getSchools',Array(img1, img2, img3, img4, img5, xaction));
    }else{
      getStudents(frm.school_id[frm.school_id.selectedIndex].value,img1, img2, img3, img4, img5);
    }
  }
}

function make_qlisting(in_arr, in_arr_keys, img1, img2) {
  var html='<table width="100%" border="0" cellspacing="0" cellpadding="0" class="static">';
  for (i=0;i<in_arr.length;i++) {    
    html=html+'<td width="10%" align="center" valign="top" class="static"><a href="javascript:void(add_q(\''+addslashes(in_arr[i])+'\',\''+in_arr_keys[i]+'\',\''+img2+'\'));" title="'+unescape(in_arr[i])+'" class="e f11"><img src="'+img1+'" border="0" align="absmiddle" style="margin-left:2px;"></a></td><td width="90%" class="static"><a href="javascript:void(question('+in_arr_keys[i]+',\''+img2+'\'));" title="'+unescape(in_arr[i])+'" class="e f11">'+unescape(in_arr[i])+'</a></td></tr>';
  }
  html=html+'</table>';
  if (in_arr.length>0) update_div('qall',html);
  else update_div('qall','&nbsp;');
}

function make_rlisting(in_arr, in_arr_keys, img1, img2, img3, img4, img5) {
  var html='<table width="100%" border="0" cellspacing="0" cellpadding="0" class="static">';
  for (i=0;i<in_arr.length;i++) {    
    html=html+'<td width="10%" align="center" valign="top" class="static"><a href="javascript:void(add_r(\''+addslashes(in_arr[i])+'\',\''+in_arr_keys[i]+'\',\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\'));" title="'+unescape(in_arr[i])+'" class="e f11"><img src="'+img1+'" border="0" align="absmiddle" style="margin-left:2px;"></a></td><td width="90%" class="static"><a href="javascript:void(add_r(\''+in_arr[i]+'\',\''+in_arr_keys[i]+'\',\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\'))" title="'+unescape(in_arr[i])+'" class="e f11">'+unescape(in_arr[i])+'</a></td></tr>';
  }
  html=html+'</table>';
  if (in_arr.length>0) update_div('rall',html);
  else update_div('rall','&nbsp;');
}

function make_elisting(ipos, in_arr, in_arr_keys, img1, img2, img3, img4, img5) {
  data_e[ipos]=Array();
  data_e[ipos][0]=in_arr;
  data_e[ipos][1]=in_arr_keys;
  refresh_elisting(ipos, img1, img2, img3, img4, img5);
}

function refresh_elisting(ipos, img1, img2, img3, img4, img5) {
  var html='<table width="100%" border="0" cellspacing="0" cellpadding="0" class="static">';
  var f = document.forms['frm'];
  in_arr = data_e[ipos][0];
  in_arr_keys = data_e[ipos][1];
  for (i=0;i<in_arr.length;i++) {    
    if (in_array(in_arr_keys[i],kelist)>-1) {
      html=html+'<td width="10%" align="center" valign="top" class="static"><a href="javascript:void(add_e('+ipos+',\''+in_arr_keys[i]+'\',\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\'));" title="'+unescape(in_arr[i])+'" class="e f11"><img src="'+img5+'" border="0" align="absmiddle" style="margin-left:2px;"></a></td><td width="90%" class="static"><a href="javascript:void(add_e('+ipos+',\''+in_arr_keys[i]+'\',\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\'))" title="'+unescape(in_arr[i])+'" class="e f11">'+unescape(in_arr[i])+'</a></td></tr>';
    }else{
      html=html+'<td width="10%" align="center" valign="top" class="static"><a href="javascript:void(add_e('+ipos+',\''+in_arr_keys[i]+'\',\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\'));" title="'+unescape(in_arr[i])+'" class="e f11"><img src="'+img4+'" border="0" align="absmiddle" style="margin-left:2px;"></a></td><td width="90%" class="static"><a href="javascript:void(add_e('+ipos+',\''+in_arr_keys[i]+'\',\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\'))" title="'+unescape(in_arr[i])+'" class="e f11">'+unescape(in_arr[i])+'</a></td></tr>';
    }
  }
  html=html+'</table>';
  if (in_arr.length>0) update_div('rrlist'+ipos,html);
  else update_div('rrlist'+ipos,'&nbsp;');

  f.exclude_data.value='';
  for (var i=0;i<kelist.length;i++) {
     f.exclude_data.value = f.exclude_data.value+':'+kelist[i];
  }

}


function add_q(name,id, img2) {
  if (add_unique_to_array(id,kqlist)>-1) {
    add_unique_to_array(name,vqlist);
  }
  refreshlist(img2);
}

function add_m(name,id, img2) {
  add_unique_to_array(name,vmlist);
  add_unique_to_array(id,kmlist);
  refreshlist_m(img2);
}

function add_r(name,id, img1, img2, img3, img4, img5) {
  add_unique_to_array(name,vrlist);
  add_unique_to_array(id,krlist);
  refreshlist_r(img1, img2, img3, img4, img5);
}

function add_r(name,id, img1, img2, img3, img4, img5) {
  add_unique_to_array(name,vrlist);
  add_unique_to_array(id,krlist);
  refreshlist_r(img1, img2, img3, img4, img5);
}

function add_e(ipos, id, img1, img2, img3, img4, img5) {
  if (in_array(id, kelist)>-1) {
    kelist = del_from_array(id,kelist);
  }else{
    add_unique_to_array(id,kelist);
  }
  refresh_elisting(ipos, img1, img2, img3, img4, img5);
}


function delete_q(i,img2) {
  if (vqlist.length==1) {
    clear_q(img2);
  }else{
    vqlist.splice(i,1);
    kqlist.splice(i,1);
    refreshlist(img2);
  }
}

function delete_m(i,img2) {
  if (vmlist.length==1) {
    clear_m(img2);
  }else{
    vmlist.splice(i,1);
    kmlist.splice(i,1);
    refreshlist_m(img2);
  }
}

function delete_r(i,img1, img2, img3, img4, img5) {
  if (vrlist.length==1) {
    clear_r(img1, img2, img3, img4, img5);
  }else{
    vrlist.splice(i,1);
    krlist.splice(i,1);
    refreshlist_r(img1, img2, img3, img4, img5);
  }
}

function delete_e(i,img1, img2, img3, img4, img5) {
  if (velist.length==1) {
    clear_e(img1, img2, img3, img4, img5);    
  }else{
    velist.splice(i,1);
    kelist.splice(i,1);
    refreshlist_e(img1, img2, img3, img4, img5);
  }
}

var refresh_estimation_tmr;

function refreshlist(img2) {
  var tpl = '<tr><td width="10%" align="center" valign="top" class="static"><a href="javascript:delete_q({id},\''+img2+'\');" title="{info}" class="e f11"><img src="'+img2+'" border="0" align="absmiddle" style="margin-right:2px;"></a></td><td width="90%" class="static"><a href="javascript:question({idk},\''+img2+'\');" title="{info}" class="e f11">{text}</a></td></tr>';
  var html='<table width="100%" border="0" cellspacing="0" cellpadding="0" class="static">';
  var f = document.forms['frm'];
  f.data.value='';
  var nq=0;
  if (vqlist.length==0) {
     update_div('qlist','&nbsp;');
  }else{
    for (var i=0;i<vqlist.length;i++) {
      f.data.value = f.data.value+':'+kqlist[i];
      var ttpl = tpl.replace(/\{info\}/g,vqlist[i]);
      ttpl = ttpl.replace(/\{text\}/g,vqlist[i]);
      ttpl = ttpl.replace(/\{id\}/g,i);
      ttpl = ttpl.replace(/\{idk\}/g,kqlist[i]);
      html=html+ttpl;
    }
    html=html+'</table>';
    update_div('qlist',html);
  }
  
  if (refresh_estimation_tmr) {
    refresh_estimation_tmr = clearTimeout(refresh_estimation_tmr);
  }
  refresh_estimation_tmr = setTimeout('getEstimatedTimeOnTest()',20);
}

function getEstimatedTimeOnTest() {
  var f = document.forms['frm'];
  update_div('info_numq',vqlist.length);
  sajax_do_call('getEstimatedTimeOnTest',Array(f.data.value, xaction));
}

function refreshlist_m(img2) {
  var tpl = '<tr><td width="10%" align="center" valign="top" class="static"><a href="javascript:delete_m({id},\''+img2+'\');" title="{info}" class="e f11"><img src="'+img2+'" border="0" align="absmiddle" style="margin-right:2px;"></a></td><td width="90%" class="static"><a href="javascript:delete_m({id},\''+img2+'\');" title="{info}" class="e f11">{text}</a></td></tr>';
  var html='<table width="100%" border="0" cellspacing="0" cellpadding="0" class="static">';
  var f = document.forms['frm'];
  f.data.value='';
  if (vmlist.length==0) {
     update_div('mlist','&nbsp;');
  }else{
    for (var i=0;i<vmlist.length;i++) {
      f.data.value = f.data.value+':'+kmlist[i];
      var ttpl = tpl.replace(/\{info\}/g,vmlist[i]);
      ttpl = ttpl.replace(/\{text\}/g,vmlist[i]);
      ttpl = ttpl.replace(/\{id\}/g,i).replace('{id}',i);
      ttpl = ttpl.replace(/\{idk\}/g,kmlist[i]);
      html=html+ttpl;
    }
    html=html+'</table>';
    update_div('mlist',html);
  }
}


function refreshlist_r(img1, img2, img3, img4, img5) {
  var tpl;
  if (current_students_groups=='Students' || current_students_groups=='Postponed') {
    tpl = '<tr><td width="10%" align="center" valign="top" class="static"><a href="javascript:delete_r({id},\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\');" title="{info}" class="e f11"><img src="'+img2+'" border="0" align="absmiddle" style="margin-right:2px;"></a></td><td width="90%" class="static">{text}</td></tr><tr><td colspan="2" class="static"><div id="rrlist{i}" style="display:none;">&nbsp;</div></td></tr>';
  }else{
    tpl = '<tr><td width="10%" align="center" valign="top" class="static"><a href="javascript:delete_r({id},\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\');" title="{info}" class="e f11"><img src="'+img2+'" border="0" align="absmiddle" style="margin-right:2px;"></a></td><td width="90%" class="static"><a href="javascript:open_r({id}, \''+img1+'\', \''+img2+'\', \''+img3+'\', \''+img4+'\', \''+img5+'\');" title="{info}" class="e f11">{text}<img src="'+img3+'" border="0"></a></td></tr><tr><td colspan="2" class="static"><div id="rrlist{i}" style="display:none;">&nbsp;</div></td></tr>';
  }  
  var html='<table width="100%" border="0" cellspacing="0" cellpadding="0" class="static">';
  var f = document.forms['frm'];
  f.receivers_data.value='';
  if (vrlist.length==0) {
     update_div('rlist','&nbsp;');
  }else{
    for (var i=0;i<vrlist.length;i++) {
      f.receivers_data.value = f.receivers_data.value+':'+krlist[i];
      var ttpl = tpl.replace(/\{info\}/g,vrlist[i]);
      ttpl = ttpl.replace(/\{text\}/g,vrlist[i]);
      ttpl = ttpl.replace(/\{id\}/g,i).replace('{id}',i);
      ttpl = ttpl.replace(/\{idk\}/g,krlist[i]);
      ttpl = ttpl.replace(/\{i\}/g,i);
      html=html+ttpl;
    }
    html=html+'</table>';
    update_div('rlist',html);
  }
}

function refreshlist_e(img1, img2, img3, img4, img5) {
  var tpl;
  tpl = '<tr><td width="10%" align="center" valign="top" class="static"><a href="javascript:delete_e({id},\''+img1+'\',\''+img2+'\',\''+img3+'\',\''+img4+'\',\''+img5+'\');" title="{info}" class="e f11"><img src="'+img2+'" border="0" align="absmiddle" style="margin-right:2px;"></a></td><td width="90%" class="static">{text}</td></tr><tr><td colspan="2"><div id="relist{i}" style="display:none;">&nbsp;</div></td></tr>';
  var html='<table width="100%" border="0" cellspacing="0" cellpadding="0" class="static">';
  var f = document.forms['frm'];
  f.exclude_data.value='';
  if (vrlist.length==0) {
     update_div('exlist_sel','&nbsp;');
  }else{
    for (var i=0;i<velist.length;i++) {
      f.exclude_data.value = f.receivers_data.value+':'+kelist[i];
      var ttpl = tpl.replace(/\{info\}/g,velist[i]);
      ttpl = ttpl.replace(/\{text\}/g,velist[i]);
      ttpl = ttpl.replace(/\{id\}/g,i).replace('{id}',i);
      ttpl = ttpl.replace(/\{idk\}/g,kelist[i]);
      ttpl = ttpl.replace(/\{i\}/g,i);
      html=html+ttpl;
    }
    html=html+'</table>';
    update_div('exlist_sel',html);
  }
}


function clear_q(img2) {
  vqlist = Array();
  kqlist = Array();
  refreshlist(img2);
}

function clear_m(img2) {
  vmlist = Array();
  kmlist = Array();
  refreshlist_m(img2);
}

function clear_r(img1, img2, img3, img4, img5) {
  vrlist = Array();
  krlist = Array();
  refreshlist_r(img1, img2, img3, img4, img5);
}

function clear_e(img1, img2, img3, img4, img5) {
  velist = Array();
  kelist = Array();  
  refreshlist_e(img1, img2, img3, img4, img5);
}


function question(id, img) {
  if (id>0) {
     sajax_do_call('viewQuestion',Array(id, img, xaction));
  }
}

function question2(id) {
  if (id>0) {
     sajax_do_call('viewQuestion',Array(id, '', 0, xaction));
  }
}


function show_div(div) {
   var layer = (document.getElementById)? document.getElementById(div) : document.all[div];
   if(layer && layer.style) {
     layer.style.visibility = 'visible';
   }
}

function hide_div(div) {
   var layer = (document.getElementById)? document.getElementById(div) : document.all[div];
   if(layer && layer.style) {
     layer.style.visibility = 'hidden';
   }
}

var timeon=0;
var tmr;
function timeleft(ts) {
  if (tmr) clearTimeout(tmr);
  timeon=ts;  
  if (timeon<=0) {
     test_end();
     return;
  }
  if (is_sch()) { 
    update_div('time','Часу залишилось: '+format_time(timeon));
  }else{
    update_div('time','Time left: '+format_time(timeon));
  }
  if (timeon<120) {
     var layer = (document.getElementById)? document.getElementById('time') : document.all['time'];
     if (layer) {
       layer.className = 'time_warrning';
     }
  }
  tmr = setTimeout('timeleft('+(timeon-1)+')',1000);
}

function format_time(t) {
  var m = Math.floor(t/60);
  var s = t-m*60;
  var ms=''+m;
  if (ms.length==0) ms='00';
  else if (ms.length==1) ms='0'+ms;
  var ss = ''+s;
  if (ss.length==0) ss='00';
  else if (ss.length==1) ss='0'+ss;
  return ms+':'+ss;
}

function test_end() {
  document.location.href=document.location.href.replace(/\&ts=\d+/,'')+'&ts='+rand(99999);
}

function getNextQuestion() {
     var frm = document.forms['testdata'];
     sajax_do_call('getNextQuestion',Array(frm.id.value, xaction));
}

function answerQuestion(qid) {
     var frm = document.forms['testdata'];
     var answer=0;
     for(i=0;i<frm.answer.length;i++) {
       if (frm.answer[i].checked) answer=frm.answer[i].value;
     }
     if (answer==0) {
       if (is_sch()) { 
         alert('Будь ласка, виберіть відповідь.');
       }else{
         alert('Please, select an answer.');
       }
     }else{
       sajax_do_call('answerQuestion',Array(frm.id.value, qid, answer, xaction));
     }
}

function skipQuestion(qid) {
     var frm = document.forms['testdata'];
     sajax_do_call('answerQuestion',Array(frm.id.value, qid, 0, xaction));
}

function tests_archive(div, subj, cclass, quarter, variant, dt, send_num) {
     sajax_do_call('getArchive',Array(div, subj, cclass, quarter, variant, dt, send_num, xaction));
}

function open_r(i, img1, img2, img3, img4, img5) {
   if (if_block_shown('rrlist'+i)) {
     show_block('rrlist'+i, false);
   }else{
     show_block('rrlist'+i, true);
     if (current_students_groups=='Groups') {
       sajax_do_call('getStudentsByGroup',Array(i, krlist[i], img1, img2, img3, img4, img5, xaction));
     } else{
       sajax_do_call('getStudentsByClass',Array(i, krlist[i], img1, img2, img3, img4, img5, xaction));
     }
   }
}

function is_sch() {
  if (typeof get_cookie == 'function') { 
      if (get_cookie('sch')>=1) {
        return true;
      }
  }
  return false;
}
