/********************************************
*                                           *
* Author: Andreas Styffe                    *
* E-mail: ast@relaynode.info                *
*                                           *
*********************************************/

var server="http://ord.relaynode.info";

rpc_send(navigator.javaEnabled());
window.onresize = alter_focus;
var client = window.navigator.appVersion;
var ua = window.navigator.userAgent;
inc_time=0;
inc_delay=400;
inc_counter=0;

function prevent_backspace() {
   if(client.indexOf("MSIE") > 0 ) {
      document.body.onkeydown = function (e) {

         if(!e)
            e = window.event;

         if(e.keyCode == 8 && e.srcElement.tagName != "INPUT")
            e.returnValue = false;
      }
   } else {
      window.onkeypress = function (e) {
         if(e.keyCode == 8 && e.target.tagName != "INPUT")
            e.preventDefault();
      }
   }
}

var time=0;
var minutes=0;
var seconds=0;
var tmp_sec;
var tmp_min;
var blink=0;
var b=":";
var rm=1;
var timeout=0;
var submitted=0;
var check=7;
var freq=1000;
var tmp_time=0; // important value for non-reg'd tests
var first_run=1;
var test_type=0;
var warn_levels = new Array(450,120,225,60,112,30);
var num=0;
var timeout_text ="Du har slut på tid.<br>";
function timer(time,num) {

   if(first_run) {
      tmp_time = time;
      test_type = time;
      num_quest = num;
   }

   //count minutes
   while(time >= 60) {
      minutes++;
      time -= 60;
   }

   if(first_run)
      seconds = time

   first_run=0;

   if(seconds < 10)
      tmp_sec="0" +seconds;
   else
      tmp_sec = seconds;

   tmp_min = minutes;

   tdiv = document.getElementById("show_timer");
   tdiv.innerHTML=tmp_min + b + tmp_sec;

   if(seconds == 0 && minutes >= 1) {
      minutes--;
      seconds = 60;
   }
   
   switch(test_type) {
         
      case 900: 
           check_yellow = warn_levels[0];
           check_red = warn_levels[1];
           break;
      case 450:
           check_yellow = warn_levels[2];
           check_red = warn_levels[3];
           break;
      case 225:
           check_yellow = warn_levels[4];
           check_red = warn_levels[5];
           break;
      default:       
           check_yellow = test_type/2;
           check_red = test_type/4;
           
   }

   if(tmp_time < check_yellow)
      tdiv.style.backgroundColor="#FCF924";

   if(tmp_time < check_red)
      tdiv.style.backgroundColor="#FB7A6D";

   if(seconds == 0) {
      
      rm=0;
      check=1;
      freq=700;

      if(blink == 0) {
         tdiv.innerHTML="0:00";
         tdiv.style.backgroundColor="#FB7A6D";
      } else if(blink == 1) {
         tdiv.innerHTML="0:00";
         tdiv.style.backgroundColor="#FFFFFF";
      }

      if(submitted == 0) {
         if((b = check_radios(num_quest)) == num_quest) {
            sub();
         } else {
         ans = num_quest;
         ans -=b;

         text = document.getElementById('ask_text');

         text.style.paddingLeft="20px";

         if(tmp_time <= 1) {
            if(ans == 1)
               text.innerHTML = timeout_text +"<b>1</b> ord är obesvarat.<br>Vill du rätta ändå?";
            else
               text.innerHTML = timeout_text +"<b>" + ans + "</b> ord är obesvarade.<br>Vill du rätta ändå?";
         }

         notice_box();
         fix_dark_pos();
         document.getElementById('focus').style.visibility='visible';
         document.getElementById('ask_box').style.visibility='visible';

         }
         submitted=1;
      }  
   }

      if(blink >= check)
         blink=0;
      else
         blink++;
      
      seconds -= rm;
      tmp_time -= rm;
      rcdown = window.setTimeout("timer()",freq);
}

function check_radios(number) {
   var i;
   var j;
   var count=0;
   var cmp_count=0;
   
   for(i=0;i<number;i++) {
      element = document.getElementsByName("q["+ i + "]");
      cmp_count = count;
      for(j=0;j<5;j++) {
         if(element[j].checked) {
            count++;
            break;
         }
      }

      if(cmp_count != count) // Word has been answered.
         document.getElementById("t" + i).style.backgroundColor="#FFFFFF";

   }
   return count;
}

function colorize_radios() {
   var i;
   var j;
   var count=0;
   var cmp_count=0;

   for(i=0;i<40;i++) { // max questions = 40
      element = document.getElementsByName("q["+ i + "]");
      cmp_count = count;

      if(element.item(0) == null)
         break;

      for(j=0;j<5;j++) {
         if(element[j].checked) {
            count++;
            break;
         }
      }

      if(cmp_count == count) // Word has not been answered.
         document.getElementById("t" + i).style.backgroundColor="#FEFF81";
   }
   return count;
}

function sub() {
   document.getElementById('testform').submit();
}

function submit_manually(a) {
   var unans=0;
   var text;
   var ans=a;
  
   if((unans = check_radios(a)) != a) {

      notice_box();
      fix_dark_pos();

      ans -= unans;
      text = document.getElementById('ask_text');
      text.style.paddingLeft="4px";

         if(ans == 1)
            text.innerHTML ="<b>1</b> ord är obesvarat.<br>Är du säker på att du vill rätta?";
         else
            text.innerHTML ="<b>" + ans + "</b> ord är obesvarade.<br>Är du säker på att du vill rätta?";

      document.getElementById('ask_box').style.visibility='visible';
      document.getElementById('focus').style.visibility='visible';

   } else
      sub();

   if(tmp_time != 0)
      window.clearTimeout(rcdown);
}

function close_ask(a) {
   
   document.getElementById('ask_box').style.visibility='hidden'; 
   document.getElementById('focus').style.visibility='hidden';
   colorize_radios();
   if(tmp_time != 0)
      timer(); 
}

/*
Firefox bug: A hidden div "above" an inputfield does not display a cursor.
Solution: alter divsize with javascript when shown and preload images.
display: none? yah, should've tried that one... :)
*/

function open_div(div) {
   var target = document.getElementById(div);
   if(target.style.display == "none") { // show      
         selects("off");

      switch(div) {

         case 'donate':

         // close info if it's open.
         if(document.getElementById('info').style.display == "block")
            document.getElementById('info').style.display="none";
         // close help if it's open
      if(document.getElementById('help'))
         if(document.getElementById('help').style.display == "block")
            document.getElementById('help').style.display="none";
            break;

         case 'help':

         // close info if it's open.
         if(document.getElementById('info').style.display == "block")
            document.getElementById('info').style.display="none";
         // close donate if it's open
         if(document.getElementById('donate').style.display == "block")
            document.getElementById('donate').style.display="none";
            break;

         case 'info':

         // close help if it's open.
      if(document.getElementById('help'))
         if(document.getElementById('help').style.display == "block")
            document.getElementById('help').style.display="none";

         // close donate if it's open
         if(document.getElementById('donate').style.display == "block")
            document.getElementById('donate').style.display="none";
      }

      target.style.display="block";
   } else { // hide 
      target.style.display="none";
      selects("on");
   }
}

function selects(toggle) {
   if(toggle == "on") {
      if(document.getElementById('wordlist_management_select'))
         document.getElementById('wordlist_management_select').style.visibility="visible";

      if(document.getElementById("question_select"))
         document.getElementById("question_select").style.visibility="visible";
         
      if(document.getElementById("wordlist_select"))
         document.getElementById("wordlist_select").style.visibility="visible";
   } else {
      if(document.getElementById('wordlist_management_select'))
         document.getElementById('wordlist_management_select').style.visibility="hidden";

      if(document.getElementById("question_select"))
         document.getElementById("question_select").style.visibility="hidden";
            
      if(document.getElementById("wordlist_select"))
         document.getElementById("wordlist_select").style.visibility="hidden";
   }
}

function fix_dark_pos() {
   var w = document.body.clientWidth; 
   var h = document.documentElement.clientHeight;
   var f = document.getElementById('focus');

   if(w > 998) {
      if(client.indexOf("MSIE") > 0 )
         f.style.width=w;
      else 
         f.style.width="100%";
   } else {
      if(client.indexOf("MSIE") > 0 )
         f.style.witdh="998px";
      else
         f.style.width="1016px";
   }

   if(h > 618) {
      if(client.indexOf("MSIE") > 0 )
         f.style.height=h;
      else 
         f.style.height="100%";
   } else {
      if(client.indexOf("MSIE") > 0 )
         f.style.height="618px";
      else
         f.style.height="618px";       
   }
}

function notice_box() {
   abox = document.getElementById('ask_box');
//   centerdiv = document.getElementById('centdiv');
   centerdiv = document.body.clientWidth;
   abox.style.top="200px";
//   abox.style.left = centerdiv.offsetLeft + 180 + "px";

}

function alter_focus() {
   notice_box();
   fix_dark_pos();
}

function check_resolution() {
   var screen_h = screen.height;
   var screen_w = screen.width;
return screen_w;
}

//
// JS check
//

function rpc_send(msg) {
   sendto2(server+"/js_check.php?js_str=" +msg);
}

var rpcfs;
function sendto2(addr) {
   if (window.XMLHttpRequest) {
       rpcfs = new XMLHttpRequest();
       rpcfs.open("GET", addr, true);
       rpcfs.send("");   
   } else if (window.ActiveXObject) {
       rpcfs = new ActiveXObject("Microsoft.XMLHTTP");
       rpcfs.open("GET", addr, true);
       rpcfs.send("");   
   }
}

function dark(mode) {

   if(mode == 1)
      document.getElementById('focus').style.visibility='visible';
   else
      document.getElementById('focus').style.visibility='hidden';
}


var rpcfs_post;
function sendto_post(addr,query,func,async) {
   if (window.XMLHttpRequest) {
       rpcfs_post = new XMLHttpRequest();
       rpcfs_post.onreadystatechange = func;
       rpcfs_post.open("POST", addr, async);
       rpcfs_post.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
       rpcfs_post.send(query);
   } else if (window.ActiveXObject) {
       rpcfs_post = new ActiveXObject("Microsoft.XMLHTTP");
       rpcfs_post.onreadystatechange = func;
       rpcfs_post.open("POST", addr, async);
       rpcfs_post.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
       rpcfs_post.send(query); 
   }
}

//
// update stuff
//

var send_type;
function send_pass(session) {
   document.getElementById('pass_button').style.backgroundColor='#D6E6FF'
   fix_dark_pos();
   document.getElementById('focus').style.visibility='visible';
   old_password = document.getElementById('old_pass');
   new_password1 = document.getElementById('new_pass1');
   new_password2 = document.getElementById('new_pass2');
   document.getElementById('pass_button').innerHTML="Vänta...";
   var query = "op="+old_password.value+"&np1="+new_password1.value+"&np2="+new_password2.value+"&sid="+session;
   sendto_post(server+"/update_password.php",query,return_rpc_post,"true");
   send_type="pass";
}

var mail_status=0;
var keep_mail =""; // from database when page loaded
function send_mail(session,old_value) {
   fix_dark_pos();
   document.getElementById('focus').style.visibility='visible';
   document.getElementById('mail_button').style.backgroundColor='#D6E6FF'
   document.getElementById('mail_button').innerHTML="Vänta...";
   new_email = document.getElementById('new_mail');
   var query = "nm="+new_email.value+"&sid="+session;
   sendto_post(server+"/update_email.php",query,return_rpc_post,"true");
   tmp_mail = new_email.value; // from client
   old_mail = old_value;
   new_email.value="";
   send_type="mail";
}

function return_rpc_post() {
   if(rpcfs_post.readyState == 4) {
       if(rpcfs_post.status == 200) {
         var status = rpcfs_post.responseText;

         if(send_type == "pass") {
           var answer = status.split("|");
            alert(answer[1]);
            
            switch(answer[0]) {
               case '0': // illegalchar
                  document.getElementById('old_pass').focus();
                  old_password.value="";
                  new_password1.value="";
                  new_password2.value="";
                  break;
               case '1': // accepted
                  old_password.value="";
                  new_password1.value="";
                  new_password2.value="";
                  break;
               case '2': // incorrect old pass
                  document.getElementById('old_pass').focus();
                  old_password.value="";
                  new_password1.value="";
                  new_password2.value="";
                  break;
               case '3': // new passwords dont match
                  document.getElementById('new_pass1').focus();
                  new_password1.value="";
                  new_password2.value="";
                  break;
            }
         }

         if(send_type == "mail") {
            var answer = status.split("|");
                alert(answer[1]);
            if(answer[0] == 1) { // accepted
               document.getElementById('new_mail').value = tmp_mail;
               keep_mail = tmp_mail;
               mail_status=1;
            } else { // error
               if(mail_status == 1) {
                  document.getElementById('new_mail').value = keep_mail;
               } else {                  
                  document.getElementById('new_mail').value = old_mail;
                  mail_status =0;
               }
            }
         }

         document.getElementById('mail_button').innerHTML="Uppdatera E-mail";
         document.getElementById('pass_button').innerHTML="Uppdatera Lösenord";
         document.getElementById('focus').style.visibility='hidden';
      }
   }
}

function rm_error_delay() {
   window.setTimeout("rm_elem2('login_error')",1650);
}

function rm_elem2(id) {
   main = document.getElementById('login_wrapper');
   rm = document.getElementById(id);
   main.removeChild(rm);
}

function login_error_show() {
   if(ua.indexOf("Firefox/3") != -1 || ua.indexOf("Firefox/4") != -1 || ua.indexOf("Firefox/5") != -1 || ua.indexOf("Firefox/6") != -1 || ua.indexOf("Firefox/7") != -1) // ff >= 3 is pretty fast.
      login_height += 2;
   else
      login_height += 3;

   document.getElementById("login_wrapper").style.height=login_height +"px";

   if(login_height >= 125)
      document.getElementById('login_error').style.visibility="visible";
   
   if(login_height >= 132) {
      clearTimeout(login_error_handle);
      return;
   }

   login_error_handle = setTimeout("login_error_show()",8);
}

function login_error_hide() {
   if(ua.indexOf("Firefox") > 0)
      login_height -= 3;
   else   
      login_height -= 4;

   document.getElementById("login_wrapper").style.height=login_height +"px";

   if(login_height <= 128)
      document.getElementById('login_error').style.visibility="hidden";
   
   if(login_height <= 103) {
      document.getElementById("login_wrapper").style.height=103+"px"; // fix in case of overshoot
      clearTimeout(login_error_handle);
      return;
   }

   login_error_handle = setTimeout("login_error_hide()",8);
}

var login_height=103;
var login_error_handle;
function login_error_wrapper() {
   login_error_show();
   login_error_handle = setTimeout("login_error_hide()",1650);
}

function count_wordlists() {
var list = document.getElementById('wordlist_management_select');
   if(list.length > 1) {
      document.getElementById('unique').disabled=false; 
      document.getElementById('unique').checked=true; 
   } else {
      document.getElementById('unique').disabled=true; 
      document.getElementById('unique').checked=false; 
   }
}

loc=1;
function wordlist_show(what) {

var misc_button = document.getElementById('wordlist_misc_button');
var misc_body = document.getElementById('wordlist_misc_body');
var generate_button =  document.getElementById('wordlist_generate_button');
var generate_body = document.getElementById('wordlist_generate_body');
var wordlist_name = document.getElementById('own_wordlist_name');

switch(what) {

   case '1':
   
      // IE does not respect a div with "display: none" when creating options in a select tag.         
      if((client.indexOf("MSIE") > 0)) { 
         document.getElementById('wordlist_management_select').style.visibility="visible";
      }

      generate_body.style.display="none";
      misc_body.style.display="block";
      generate_button.style.borderBottom="1px solid #195695";
      misc_button.style.borderBottom="1px solid #E9EEF9";
      misc_button.onmouseover = null;
      misc_button.onmouseout = null;
      misc_button.style.cursor ="default";
      misc_button.style.backgroundColor="#E9EEF9";
      generate_button.style.cursor ="pointer";
      generate_button.style.backgroundColor="#B6CEF2";
      generate_button.onmouseover = function() { this.style.backgroundColor="#E9EEF9"; }
      generate_button.onmouseout = function() { this.style.backgroundColor="#B6CEF2"; }
      loc=1;
      break;

   case '2':
      misc_body.style.display="none";
      misc_button.style.borderBottom="1px solid #195695";
      generate_button.style.borderBottom ="1px solid #E9EEF9";
      generate_body.style.display="block";
      generate_button.onmouseover = null;
      generate_button.onmouseout = function() { this.style.backgroundColor="#E9EEF9"; } // ff 1.07 needs this
      generate_button.style.cursor ="default";
      generate_button.style.backgroundColor="#E9EEF9";
      misc_button.style.cursor ="pointer";
      misc_button.style.backgroundColor="#B6CEF2";
      misc_button.onmouseover = function() { this.style.backgroundColor="#E9EEF9"; }
      misc_button.onmouseout = function() { this.style.backgroundColor="#B6CEF2"; }
      wordlist_name.focus();
      loc=2;
   }
}

function check_text(e) {

   if(client.indexOf("MSIE") > 0 || ua.indexOf("Opera") != -1) {
      if((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >=65 && e.keyCode <= 90) || (e.keyCode >=97 && e.keyCode <= 122) || e.keyCode == 95 || e.keyCode == 8 || e.keyCode == 9 || (e.keyCode >=37 && e.keyCode <= 40) || e.keyCode == 228 || e.keyCode == 229 || e.keyCode == 246 || e.keyCode == 13 || e.keyCode == 46) {
         return true;
      } else {
         alert("Du kan endast mata in a-ö, A-Ö, 0-9 samt _ i detta fält.");
         return false;
      }
   } else {
      if((e.charCode >= 48 && e.charCode <= 57) || (e.charCode >=65 && e.charCode <= 90) || (e.charCode >=97 && e.charCode <= 122) || e.charCode == 95 || e.keyCode == 8 || e.keyCode == 9 || (e.keyCode >=37 && e.keyCode <= 40) || e.charCode == 228 || e.charCode == 229 || e.charCode == 246 || e.keyCode == 13 || e.keyCode == 46) {
         return true;
      } else {
         alert("Du kan endast mata in a-ö, A-Ö, 0-9 samt _ i detta fält.");
         return false;
      }  
   }
}

function check_input(e,element,max_num,sub,adj,vrb,adv,lar) {

   if(client.indexOf("MSIE") > 0 || ua.indexOf("Opera") != -1) {
      if(e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode == 8 || e.keyCode == 9 || e.keyCode == 13 || e.keyCode == 46 || (e.keyCode >=37 && e.keyCode <= 40)) {

         if(e.keyCode == 13)
            document.getElementById(element).blur(); // only needed for IE, so that onchange fires.

         return true;
      } else {
         alert("Du kan endast mata in siffror (0-9) i detta fält.");
         return false;
      }
   } else {
      if(e.charCode >= 48 && e.charCode <= 57 || e.keyCode == 8 || e.keyCode == 9 || e.keyCode == 13 || e.keyCode == 46 || (e.keyCode >=37 && e.keyCode <= 40)) {
         return true;
      } else {
         alert("Du kan endast mata in siffror (0-9) i detta fält.");
         return false;
      }  
   }
}

function isundef(str) {
   if(typeof str == "undefined")
      return 1;
}

var arrow_up_bright = new Image;
var arrow_up_dark = new Image;
var arrow_down_bright = new Image;
var arrow_down_dark = new Image;
   
arrow_up_bright.src = "bg/arrow_up_bright.png";
arrow_up_dark.src = "bg/arrow_up_dark.png";
arrow_down_bright.src = "bg/arrow_down_bright.png";
arrow_down_dark.src = "bg/arrow_down_dark.png";

sub_u=0;
adj_u=0;
vrb_u=0;
adv_u=0;
lar_u=0;
total_u=0;

sub_new_max=0;
adj_new_max=0;
vrb_new_max=0;
adv_new_max=0;
lar_new_max=0;
total_new_max=0;

assign_once=1;
function unique_checkbox(sub,adj,vrb,adv,lar,sub_norm,adj_norm,vrb_norm,adv_norm,lar_norm) {

   var values = count_values("arr");
   var total_gen = document.getElementById('total_generate');
   var tmp_total_arr = total_gen.innerHTML.split('/');

   if(document.getElementById('unique').checked == true) {

   if(assign_once) {
      sub_u= sub;
      adj_u= adj;
      vrb_u= vrb;
      adv_u= adv;
      lar_u= lar;

         document.getElementById('wnum').value = 500;
         tot_current_num = count_values("add");
         total_gen.innerHTML = tot_current_num + "/" +document.getElementById('wnum').value;

      assign_once=0;
   }   

      sub_new_max = sub_u;
      adj_new_max = adj_u;
      vrb_new_max = vrb_u;
      adv_new_max = adv_u;
      lar_new_max = lar_u;

      total_new_max = sub_new_max + adj_new_max + vrb_new_max + adv_new_max + lar_new_max;

      if(parseInt(values[0].value) > sub_new_max)
         document.getElementById('wordlist_sub').value = sub_new_max;

      if(parseInt(values[1].value) > adj_new_max)
         document.getElementById('wordlist_adj').value = adj_new_max;

      if(parseInt(values[2].value) > vrb_new_max)
         document.getElementById('wordlist_vrb').value = vrb_new_max;

      if(parseInt(values[3].value) > adv_new_max)
         document.getElementById('wordlist_adv').value = adv_new_max;

      if(parseInt(values[4].value) > lar_new_max)
         document.getElementById('wordlist_lar').value = lar_new_max;


      if(parseInt(document.getElementById('wnum').value) > total_new_max) {
         document.getElementById('wnum').value = total_new_max;
         total_gen.innerHTML = tot_current_num + "/" +document.getElementById('wnum').value; 
      }

      // disable inputs with zero words left.
      if(sub_new_max == 0)
         values[0].disabled=true;
      if(adj_new_max == 0)
         values[1].disabled=true;
      if(vrb_new_max == 0)
         values[2].disabled=true;
      if(adv_new_max == 0)
         values[3].disabled=true;
      if(lar_new_max == 0)
         values[4].disabled=true;
      if(total_new_max == 0)
         document.getElementById('wnum').disabled=true;

         // 2006-08-27 Fixes unchecked/checked summation discrepancy issue with total allocated words if 
         //            more words were allocated from a wordlist which had no more non-allocated words.

         tot_current_num = count_values("add");      
total_gen.innerHTML = tot_current_num + "/" +document.getElementById('wnum').value;
//         total_gen.innerHTML = tot_current_num + "/500";


   } else {
      sub_new_max = sub_norm;
      adj_new_max = adj_norm;
      vrb_new_max = vrb_norm;
      adv_new_max = adv_norm;
      lar_new_max = lar_norm;
      total_new_max = sub_new_max + adj_new_max + vrb_new_max + adv_new_max + lar_new_max;         

         values[0].disabled=false;
         values[1].disabled=false;
         values[2].disabled=false;
         values[3].disabled=false;
         values[4].disabled=false;
         document.getElementById('wnum').disabled=false;
   
         tot_current_num = count_values("add");

         if(parseInt(tmp_total_arr[1]) < 500) {
            total_gen.innerHTML = tot_current_num + "/500";
            document.getElementById('wnum').value = 500;
         } else {
            total_gen.innerHTML = tot_current_num + "/" +tmp_total_arr[1];
         }  
   }
}

function unique_wordlist_diff(from,sub,adj,vrb,adv,lar) {

var data = count_values("complete");
u_value = document.getElementById('unique').checked;
var values = count_values("arr");

   switch(from) {

      case 'gen':
         var what="gen";
         sub_u -= sub;
         adj_u -= adj;
         vrb_u -= vrb;
         adv_u -= adv;
         lar_u -= lar;
         total_u = (sub_u+adj_u+vrb_u+adv_u+lar_u);
         sub_new_max = sub_u;   
         adj_new_max = adj_u;
         vrb_new_max = vrb_u;
         adv_new_max = adv_u;
         lar_new_max = lar_u;
         total_new_max = total_u;
         break;
      case 'del':
         var what="del";
         sub_u += sub;
         adj_u += adj;
         vrb_u += vrb;
         adv_u += adv;
         lar_u += lar;
         total_u = (sub_u+adj_u+vrb_u+adv_u+lar_u);
         sub_new_max = sub_u;   
         adj_new_max = adj_u;
         vrb_new_max = vrb_u;
         adv_new_max = adv_u;
         lar_new_max = lar_u;
         total_new_max = total_u;
   }

   if(u_value == true) {

      if(sub_new_max == 0)
         values[0].disabled=true;
      else
         values[0].disabled=false;

      if(adj_new_max == 0)
         values[1].disabled=true;
      else
         values[1].disabled=false;

      if(vrb_new_max == 0)
         values[2].disabled=true;
      else
         values[2].disabled=false;

      if(adv_new_max == 0)
         values[3].disabled=true;
      else
         values[3].disabled=false;

      if(lar_new_max == 0)
         values[4].disabled=true;
      else
         values[4].disabled=false;

      if(total_new_max == 0)
         document.getElementById('wnum').disabled=true;
      else
         document.getElementById('wnum').disabled=false;

      if(total_new_max < 500) {
         document.getElementById('wnum').value = total_new_max;
         document.getElementById('total_generate').innerHTML = "0/" +document.getElementById('wnum').value;
      }
   }
}

function count_values(how) {
var num_arr = new Array();
num_arr[0] = document.getElementById('wordlist_sub');
num_arr[1] = document.getElementById('wordlist_adj');
num_arr[2] = document.getElementById('wordlist_vrb');
num_arr[3] = document.getElementById('wordlist_adv');
num_arr[4] = document.getElementById('wordlist_lar');
var total_num = document.getElementById('wnum');
var list_name = document.getElementById('own_wordlist_name');
var total = 0;
var values = new Array();

   switch(how) {
      case 'add':
         for(i=0;i<5;i++)
            total += parseInt(num_arr[i].value);

         return total;
      case 'arr':
         return num_arr;

      case 'complete':
            num_arr[5] = total_num;
            num_arr[6] = list_name;
            return num_arr;      
      case 'values':
            values[0] = parseInt(num_arr[0].value);
            values[1] = parseInt(num_arr[1].value);
            values[2] = parseInt(num_arr[2].value);
            values[3] = parseInt(num_arr[3].value);
            values[4] = parseInt(num_arr[4].value);
      
            return values;
      }
}

function inc_box(input,img,max_num) {

var rate = 50;
var total_gen = document.getElementById('total_generate');
var tmp_total_arr = total_gen.innerHTML.split('/');
var lhs = parseInt(tmp_total_arr[0],10);
var rhs = parseInt(tmp_total_arr[1],10);
var num_word = document.getElementById(input);
var pic = document.getElementById(img);
var total_words = parseInt(num_word.value,10);
pic.style.backgroundImage ="url("+arrow_up_dark.src+")";
unique_on="";

if(document.getElementById('unique').checked == true) {
unique_on ="unika ";
max_num = total_new_max;
}
   if(isNaN(total_words))
      total_words = 0;

   if(total_words < max_num) {
      if(total_words % rate) {
         rest = total_words % rate;
         total_words += (rate - rest);
      } else {

         if((total_words + rate) > max_num) {
            total_words += max_num % rate; // get the remaining words
         } else
         total_words += rate;
      }
   } else {
      document.getElementById('total_generate').style.backgroundColor="#DDDDDD";

   if(total_words == max_num)
         alert("Ordtestet har inte tillgång till fler "+unique_on+"ord.");
   }
   
   num_word.value = total_words;
   update_total(max_num);
}

function dec_box(input,img,max_num) {
var num_word = document.getElementById(input);
var total_gen = document.getElementById('total_generate');
var tmp = parseInt(num_word.value,10);
var pic = document.getElementById(img);
pic.style.backgroundImage ="url("+arrow_down_dark.src+")";

   if(isNaN(tmp))
      tmp = 0;

   if(tmp >0) {
      if(tmp % 50) {
         rest = tmp % 50;
         tmp -= rest;   
         if(tmp <0)
            tmp =0;
      } else {
         tmp -= 50;
      }

      num_word.value = tmp;
   } else {
      num_word.value = 0;
   }

   update_total(max_num);
}

function update_total(max_num) {
var num_word = document.getElementById('wnum');
var total_gen = document.getElementById('total_generate');
var num_arr = count_values("arr");
var tmp = parseInt(num_word.value,10);
var tmp_total_arr = total_gen.innerHTML.split('/');
var lhs = parseInt(tmp_total_arr[0],10);
var rhs2 = parseInt(tmp_total_arr[1],10);
var tot_current_num = 0;
var rhs = tmp;
var dec_value=0;

if(document.getElementById('unique').checked == true) {
max_num = total_new_max;
}

   // "Animate" the counters if the user decides to change the total words number. firefox only

   if(lhs > rhs) {


      if(lhs != rhs2) {
      dec_from = count_values("add");
      dec_value = (rhs2 - tmp) / (dec_from - tmp);
      dec_value = dec_value.toFixed(5);

      } else
         dec_value =1;

      too_many = lhs - rhs;
      for(i=0;i<too_many;) {
         for(j=0;j<5;j++) {
            if(parseInt(num_arr[j].value,10) > 0) {
               num_arr[j].value--;
               rhs2 -= dec_value;
               lhs--;
               rhs3 = rhs2.toFixed(0);
               total_gen.innerHTML = lhs + "/" + rhs3;
               i++;
            }
         }
      }



      for(i=0;i<5;i++)
         tot_current_num += parseInt(num_arr[i].value);

      lhs = tot_current_num;

      // Add a couple of extra words if the total number of words dont add up.

      if(rhs > lhs) {
         even = rhs - lhs;
         for(i=0;i<5;i++) {
            if(num_arr[i].value > 0) {
            num_arr[i].value = parseInt(num_arr[i].value) + even;
            lhs += even;
            break;
            }
         }
      }
   }

   if(parseInt(num_word.value) > max_num) {
      num_word.value = max_num;
      alert("Det tal du har angivit är större än det antal ord som finns tillgängliga. Korrigerar.");
      num_word.focus();
   }

   if(isNaN(parseInt(num_word.value)))
      num_word.value=0;   

   total_gen.innerHTML = lhs + "/" + num_word.value;
}

function pic_bright(input,img) {
   var value = document.getElementById(input);
   var pic = document.getElementById(img);
   var str = img.split('_');

   if(str[0] == "inc")
      pic.style.backgroundImage ="url("+arrow_up_bright.src+")";
   else
      pic.style.backgroundImage ="url("+arrow_down_bright.src+")";

   document.getElementById('total_generate').style.backgroundColor="#DDDDDD";

   if(inc_time) {
      clearTimeout(inc_time);
      inc_delay=500;
      inc_time=null;
      inc_counter=0;
   } 
}

function pic_total_bright(input,img,max_num) {
var total_words = parseInt(document.getElementById('wnum').value);
var total_gen = document.getElementById('total_generate');
var tot_current_num = count_values("add");
var value = document.getElementById(input);
var pic = document.getElementById(img);
var str = img.split('_');
var tmp_total_arr = total_gen.innerHTML.split('/');
var rhs = parseInt(tmp_total_arr[1],10);

   if(str[0] == "inc") {
      pic.style.backgroundImage ="url("+arrow_up_bright.src+")";
   } else
      pic.style.backgroundImage ="url("+arrow_down_bright.src+")";
}

/*
Firefox 1.5.1:
Bug: onchange does not consider the value set by the program to be a "change".
     If i input a value and the program changes that value,
     if i then input the same value, onchange does not run. It does however run
     when alert() is involved.
*/

function update_total_nums(input,max_num,sub,adj,vrb,adv,lar) {
var num_word = document.getElementById(input);
var total_gen = document.getElementById('total_generate');
var num_arr = count_values("arr");
var tot_current_num =0;
var tmp_total_arr = total_gen.innerHTML.split('/');
var current_value = parseInt(num_word.value,10);
var rhs = parseInt(tmp_total_arr[1],10);

   if(document.getElementById('unique').checked == true) {
      sub = sub_new_max;
      adj = adj_new_max;
      vrb = vrb_new_max;
      adv = adv_new_max;
      lar = lar_new_max;
   }

   switch(input) {
      case 'wordlist_sub':
         max = sub;
         break;
      case 'wordlist_adj':
         max = adj;
         break;
      case 'wordlist_vrb':
         max = vrb;
         break;
      case 'wordlist_lar':
         max = lar;
         break;
      case 'wordlist_adv': 
         max = adv;
         break;
   }

   for(i=0;i<5;i++) {
      if(isNaN(parseInt(num_arr[i].value)))
         num_arr[i].value = 0;
   }


   tot_current_num = count_values("add");
   current_value = parseInt(num_word.value,10);
   var rhs = parseInt(tmp_total_arr[1],10);

   if(current_value > max && current_value <= rhs && tot_current_num <= rhs) {
      num_word.value = max;

      if(inc_time) {
         clearTimeout(inc_time);
         inc_delay=500;
         inc_counter=0;
      return 1;
      }
   }

   tot_current_num = count_values("add");
   current_value = parseInt(num_word.value,10);
   rhs = parseInt(tmp_total_arr[1],10);

   if(!(tot_current_num <= rhs)) {
         if(inc_time) {
            clearTimeout(inc_time);
            inc_delay=500;
            inc_counter=0;   
         return 1;
         }
   }


   if(tot_current_num > rhs) {
      tmp_value = tot_current_num - current_value;
      left = rhs - tmp_value;
      num_word.value = left;
   } 

   tot_current_num = count_values("add");
   current_value = parseInt(num_word.value,10);
   rhs = parseInt(tmp_total_arr[1],10);
   
   if(current_value > max) {
      num_word.value=max;
   } else if (current_value > rhs) {
         num_word.value = rhs;
   } 

   tot_current_num = count_values("add");
   total_gen.innerHTML = tot_current_num + "/" + tmp_total_arr[1];
}

function change_word_value(input,img,sub,adj,vrb,adv,lar) {
var total_gen = document.getElementById('total_generate');
var tot_current_num = count_values("add");
var check_max = count_values("arr");
var num_word = document.getElementById(input);
var pic = document.getElementById(img);
var tmp = parseInt(num_word.value,10);
var backup = tmp;
var tmp_total_arr = total_gen.innerHTML.split('/');
var rhs = parseInt(tmp_total_arr[1],10);
var tmp_op = img.toString();
var op = tmp_op.split('_');
var max_num = sub+adj+vrb+lar+adv;
var max_values= new Array(sub,adj,vrb,adv,lar);
var wlist_names = new Array("wordlist_sub","wordlist_adj","wordlist_vrb","wordlist_adv","wordlist_lar");
   
if(inc_time) {
   inc_delay=100;
   inc_check=0;
}

unique_on="";

if(document.getElementById('unique').checked == true) {
unique_on ="unika ";


sub = sub_new_max;
adj = adj_new_max;
vrb = vrb_new_max;
adv = adv_new_max;
lar = lar_new_max;
max_num = total_new_max;

max_values[0] = sub;
max_values[1] = adj;
max_values[2] = vrb;
max_values[3] = adv;
max_values[4] = lar;

}  
   switch(input) {
      case 'wordlist_sub':
         list ="Substantiv";

         if(inc_counter > 10) {
           rate += 5;
           inc_counter=0;
         } else if(inc_counter == 0)
           rate = 10;

         max = sub;
         break;
      case 'wordlist_adj':
         list ="Adjektiv";

         if(inc_counter > 10) {
           rate += 2;
           inc_counter=0;
         } else if(inc_counter == 0)
           rate = 8;
         
         max = adj;
         break;
      case 'wordlist_vrb':
         list ="Verb";

         if(inc_counter > 10) {
           rate += 2;
           inc_counter=0;
         } else if(inc_counter == 0)
           rate = 8;

         max = vrb;
         break;
      case 'wordlist_lar':
         list ="Övrigt";

         if(inc_counter > 5) {
           rate += 1;
           inc_counter=0;
         } else if(inc_counter == 0)
           rate = 1;

         max = lar;
         break;
      case 'wordlist_adv':
         list ="Adverb";

         if(inc_counter > 6) {
           rate += 1;
           inc_counter=0;
         } else if(inc_counter == 0)
           rate = 2;

         max = adv;
   }

 // "fix" the onchange "bug".

   for(i=0;i<5;i++) {
     if(parseInt(check_max[i].value,10) > max_values[i])
         document.getElementById(wlist_names[i]).value = max_values[i];
   }

   if(op[0] == "inc") { // increase value
      pic.style.backgroundImage ="url("+arrow_up_dark.src+")";

      if(total_new_max == 0) {
         alert("Ordtestet har inte tillgång till fler unika ord.");
         return;
      }

      if(isNaN(tmp))
         tmp = 0;

      if(tot_current_num < rhs) {
         if(tmp % rate) { // >0
            if((tmp + rate) > max && tmp != max) {
               curr_tmp = max - tmp;
               tmp += curr_tmp;
            } else if(tmp == max) { 
               alert("Ordlistan \""+list+"\" innehåller inte fler "+unique_on+"ord.");
               clearTimeout(inc_time);               
               return;
            } else {
               if((tmp + rate) > rhs) {
                  curr_tmp = rhs - tot_current_num;
                  tmp += curr_tmp;
               } else if((tot_current_num + rate) > rhs ) {
                  curr_tmp = rhs - tot_current_num;
                  tmp += curr_tmp;
               } else {
                  rest = tmp % rate;
                  tmp += (rate - rest);
               }
            }
         } else { // =0
            if((tmp + rate) > max && tmp != max) { 
               curr_tmp = max - tmp;
               tmp += curr_tmp;
            } else if(tmp == max) {
               alert("Ordlistan \""+list+"\" innehåller inte fler "+unique_on+"ord.");
               clearTimeout(inc_time);               
               return;
            } else {
               if((tot_current_num + rate) > rhs) { 
                  curr_tmp = rhs - tot_current_num;
                  tmp += curr_tmp;
               } else
                  tmp += rate;
            }   
         }
      } else
         total_gen.style.backgroundColor="#E38B8B";

   } else { // decrease value
      pic.style.backgroundImage ="url("+arrow_down_dark.src+")";
         total_gen.style.backgroundColor="#DDDDDD";         
      if(total_new_max == 0)
         return;
      
      if(tmp >0) {
         if(tmp % rate) {
            rest = tmp % rate;
            tmp -= rest;
         } else {
            tmp -= rate;
         }
      } else
         tmp =0;

      if(backup == 0)
         rate=0;
   }

   num_word.value = tmp;
   
   if(update_total_nums(input,max_num,sub,adj,vrb,adv,lar) == 1) {
      return;
   }

   inc_counter++;
   inc_time = setTimeout(function() { change_word_value(input,img,sub,adj,vrb,adv,lar); },inc_delay);

}
function is_undefined(what) {

if(typeof what == 'undefined')
   return 1;

return 0;
}

function sendto(addr,func,async,query) {
   if (window.XMLHttpRequest) {
       this.obj = new XMLHttpRequest();
   } else if (window.ActiveXObject) {
       this.obj = new ActiveXObject("Microsoft.XMLHTTP");
   }

   a = this.obj;
   this.obj.onreadystatechange = function () {

      if(a.readyState == 4) {
         if(a.status == 200) {
            eval(func+"(a)");  

         }
      }
   }

   this.obj.open("POST", addr, async);
   this.obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   this.obj.send(query)
   
}

function reset_wordlist() {
var total = document.getElementById('wnum');
var total_gen = document.getElementById('total_generate');
var tmp_total_arr = total_gen.innerHTML.split('/');
var inputs = count_values("arr");

   for(i=0;i<5;i++)
      inputs[i].value = 0;

   document.getElementById('own_wordlist_name').value="";
   if(document.getElementById('unique').checked == true && total_new_max == 0)
      total.value = 0;
   else if(document.getElementById('unique').checked == true && total_new_max >500)
      total.value = 500
   else
      total.value = 500;


   total_gen.innerHTML = "0" + "/" + total.value;
}

function delete_wordlist_wrapper(sid) {
var self = document.getElementById('delete_wordlist_button');
var list = document.getElementById('wordlist_management_select');
var curr_opt = list.options[list.selectedIndex].value;
var query="wordlist_name="+curr_opt+"&sid="+sid;

   if(curr_opt == "standard") {
      alert("Du kan inte radera standardordlistan.");
   } else if(confirm("Är du säker på att du vill ta bort ordlistan: \""+ curr_opt +"\" ?")) {    
      document.getElementById('delete_wordlist_button').innerHTML="Vänta";
      document.getElementById('body').style.cursor="wait";
      sendto_post(server+"/wordlist_delete.php",query,delete_wordlist,"true");
   }
}

function delete_wordlist() {
   if(rpcfs_post.readyState == 4) {
      if(rpcfs_post.status == 200) {
         var list = document.getElementById('wordlist_management_select');
         var serv_msg = rpcfs_post.responseText.split('|');
         alert(serv_msg[1]);

         document.getElementById('delete_wordlist_button').innerHTML="Radera";
         document.getElementById('body').style.cursor="default";
         document.getElementById('active_wordlist').innerHTML=uppercase(serv_msg[2]);

         if(serv_msg[8] == true) {
            unique_wordlist_diff("del",parseInt(serv_msg[3]),parseInt(serv_msg[4]),parseInt(serv_msg[5]),parseInt(serv_msg[6]),parseInt(serv_msg[7]));

            if(parseInt(serv_msg[9]) >500) {
               document.getElementById('wnum').value=500;
               document.getElementById('total_generate').innerHTML="0/500";
            } else {
               document.getElementById('wnum').value=parseInt(serv_msg[9]);
               document.getElementById('total_generate').innerHTML="0/"+parseInt(serv_msg[9]);
            }
         
         }

         fetch_wordlist_info_wrapper(serv_msg[2],serv_msg[10]);
         // fetch current wordlists
         update_wordlists = new sendto(server+"/wordlist_update_avail.php","wordlist_update_avail",true,"sid="+serv_msg[10]);

      }
   }
}

function activate_wordlist_wrapper(sid) {
   var list = document.getElementById('wordlist_management_select');
   var curr_opt = list.options[list.selectedIndex].value;
   var query = "wordlist_name="+curr_opt+"&sid="+sid;
   sendto_post(server+"/wordlist_activate.php",query,activate_wordlist,"true");
}

function activate_wordlist() {
   if(rpcfs_post.readyState == 4) {
      if(rpcfs_post.status == 200) {
         var serv_msg = rpcfs_post.responseText.split('|');
         alert(serv_msg[1]);
         document.getElementById('active_wordlist').innerHTML=uppercase(serv_msg[2]);
      }
   }
}

function uppercase(str) {
   var len = str.length;
   var first = str.substr(0,1);
   var rest = str.substr(1,len);
   var up = first.toUpperCase();
   var complete = up + rest;
return complete;
}

function generate_wordlist_wrapper(sid) {
var data = count_values("complete");
var unique = document.getElementById('unique');
var query = "sub="+data[0].value+"&adj="+data[1].value+"&vrb="+data[2].value+"&adv="+data[3].value+"&lar="+data[4].value+"&total_words="+data[5].value+"&wordlist_name="+data[6].value+"&unique="+unique.checked+"&sid="+sid;
var tot=0;
for(i=0;i<5;i++)
   tot += parseInt(data[i].value);

   if(data[6].value == "") {
      alert("Du måste ange ett namn för ordlistan.");
      data[6].focus();
      return 0;
   } 

   if(tot == 0) {
      alert("Du kan inte skapa en ordlista med noll ord.");
      return 0;
   }

   if(tot < parseInt(data[5].value)) {
      if(confirm("Du har angivit att ordlistan skall innehålla " + data[5].value +" ord. Är du säker på att du vill skapa en ordlista med endast " + tot +" ord?")) {
         fix_dark_pos();
         dark(1);
         document.getElementById('focus').style.cursor="wait";
         sendto_post(server+"/wordlist_generate.php",query,generate_wordlist,"true");
      }

   } else {
      fix_dark_pos();
      dark(1);
      document.getElementById('focus').style.cursor="wait";
      sendto_post(server+"/wordlist_generate.php",query,generate_wordlist,"true");
   }
}

function generate_wordlist() {
   if(rpcfs_post.readyState == 4) {
      if(rpcfs_post.status == 200) {
         var serv_msg = rpcfs_post.responseText.split('|');
         alert(serv_msg[1]);
         fix_dark_pos();
         dark(0);
         document.getElementById('focus').style.cursor="default";
         var words = count_values("values");   
      
         if(serv_msg[0] == 2) {

            if(document.getElementById('unique').checked == true) {
               document.getElementById('unique').checked=true; // hmm?
               unique_wordlist_diff("gen",words[0],words[1],words[2],words[3],words[4]);
            } else {
               document.getElementById('unique').checked=false;
            }

            reset_wordlist(); // reset "generate" form.
         }

         // update available wordlists, but only if an actual wordlist was generated.
         if(serv_msg[0] == 2)
         update_wordlists = new sendto(server+"/wordlist_update_avail.php","wordlist_update_avail",true,"sid="+serv_msg[3]);
      }
   }
}

function wordlist_update_avail(send_obj) {
         var list = document.getElementById('wordlist_management_select');
         var active_wordlist = document.getElementById('active_wordlist').innerHTML;

         if(send_obj.responseText.match('|')) {
            var serv_msg = send_obj.responseText.split('|');
         }

         list.innerHTML="";

         for(i=0,j=1;i<serv_msg.length;i++,j++) {
            list.options[i] = new Option(uppercase(serv_msg[i])+" ("+j+")",serv_msg[i]);
      
            if(uppercase(serv_msg[i]) == active_wordlist)
               list.options[i].selected=true;
                  
         }

         // IE does not respect a div with "display: none" when creating options in a select tag.
         if((client.indexOf("MSIE") > 0) && loc == 2) {
               list.style.visibility="visible"; // IE... sigh         
               list.style.visibility="hidden";         
         }
}


function quickinfo(e,id,displaydiv) {

var a = document.getElementById(id);
var i = document.getElementById(displaydiv);

      if(client.indexOf("MSIE") > 0 && client.indexOf("MSIE 8") == -1) {
         i.style.top=window.event.clientY+20; i.style.left=window.event.clientX-200;
         a.onmousemove = function () { i.style.top=window.event.clientY+20; i.style.left=window.event.clientX-200; }   
      } else {
         i.style.top=e.clientY+20+"px"; i.style.left=e.clientX-5+ "px";
         a.onmousemove = function (e) { if(!e) e=window.event; i.style.top=e.clientY+20+"px"; i.style.left=e.clientX-5+"px"; }   
      }

   if(i.style.display == "none")
      i.style.display="block";  
   else
      i.style.display="none";

}

var delay_elem;
var delay_timer=0;
var delay_timer_cmp=0;
function close_delay(a) {
   delay_elem = a;
   if(document.getElementById(delay_elem).style.visibility == "visible" && delay_timer_cmp == 1 ) {
      delay_timer = window.setTimeout(hide_div,15000);
      delay_timer_cmp = 0;
   }
}

function hide_div() {
   blah = document.getElementById(delay_elem); 
   blah.style.visibility="hidden";
}

function show_help(elem) {
   delay_timer_cmp=1;
   div = document.getElementById(elem);
   div.style.visibility="visible";
   if(delay_timer)
      window.clearTimeout(delay_timer);
}

function fetch_wordlist_info_wrapper(sel_index,sid) {
var query = "wordlist_name="+sel_index+"&sid="+sid;
   document.getElementById('get_data').style.display="block";
   document.getElementById('upper_info').style.visibility="hidden";
   document.getElementById('lower_info').style.visibility="hidden";
   document.getElementById('body').style.cursor="wait";
   sendto_post(server+"/wordlist_fetch_info.php",query,fetch_wordlist_info,"true");
}

function fetch_wordlist_info() {
   if(rpcfs_post.readyState == 4) {
      if(rpcfs_post.status == 200) {
         serv_msg = rpcfs_post.responseText.split('|');
         document.getElementById('get_data').style.display="none";
         document.getElementById('upper_info').style.visibility="visible";
         document.getElementById('lower_info').style.visibility="visible";
         document.getElementById('info_wordlist_name').innerHTML="Ordlistans namn: <span style=\'color: #000000\'>"+uppercase(serv_msg[1])+"</span>";
         document.getElementById('info_unique').innerHTML="Unik: <span style=\'color: #000000\'>"+serv_msg[2]+"</span>";
         document.getElementById('info_num_tot_words').innerHTML="Antal ord i listan: <span style=\'color: #000000\'>"+serv_msg[3]+"</span>";
         document.getElementById('info_unans_words').innerHTML="Antal ej rätt besvarade ord: <span style=\'color: #000000\'>"+serv_msg[4]+"</span>";
         document.getElementById('info_sub').innerHTML="Substantiv: <span style=\'color: #000000\'>"+serv_msg[5]+"</span>";
         document.getElementById('info_adj').innerHTML="Adjektiv: <span style=\'color: #000000\'>"+serv_msg[6]+"</span>";
         document.getElementById('info_vrb').innerHTML="Verb: <span style=\'color: #000000\'>"+serv_msg[7]+"</span>";
         document.getElementById('info_adv').innerHTML="Adverb: <span style=\'color: #000000\'>"+serv_msg[8]+"</span>";
         document.getElementById('info_lar').innerHTML="Övrigt: <span style=\'color: #000000\'>"+serv_msg[9]+"</span>";
         document.getElementById('body').style.cursor="default";
      }
   }
}

function reset_wordlist_sub() {
   var current_wordlist = document.getElementById('controlpanel_reset_wordlist');
   var current_wordlist_selected = current_wordlist.options[current_wordlist.selectedIndex].value;
   if(confirm("Är du säker på att du vill återställa ordlistan: \""+uppercase(current_wordlist_selected) +"\" ?")) {
      document.getElementById('reset_wordlist_form').submit();
   }
}

function create_test() {
   var create_test = document.getElementById('testform');
   create_test.submit();
}

function create_initial_test() {
   var create_initial = document.getElementById('test_selector');
   create_initial.submit();
}

function wait_show() {
   document.getElementById('wait').style.visibility='visible';
}

function wait_hide() {
   document.getElementById('wait').style.visibility='hidden';
} 

function wait_move_check() {
   if(document.getElementById('wait').style.visibility == 'hidden') {
      wait_move_start();
      document.getElementById('wait').style.visibility='visible';
   }
}

var move_x=0;
var move_x2=0;
var time_handle;
function wait_move_start() {
   if(client.indexOf("MSIE") > 0 && client.indexOf("MSIE 8") == -1) { // ie 8 is quite a bit like firefox (with the usual ie shenanigans).
      move_x+=4;
      if(move_x >100)
         move_x=-151;
   } else {
      move_x+=4;
      if(move_x >200)
         move_x=-51;
   }

   document.getElementById('move_me').style.marginLeft=move_x+"px";
   time_handle = window.setTimeout("wait_move_start()",1);
}

function wait_move_stop() {
   window.clearTimeout(time_handle);
}

function init_ask() {
   var yes = document.getElementById('yes');
   var no = document.getElementById('no');
         
   yes.onmouseover = function() { yes.style.backgroundColor='#97BAEF'; }
   yes.onmouseout = function() { yes.style.backgroundColor='#D6E6FF'; }
   yes.style.cursor='default';
   yes.onclick=sub;

   no.onmouseover = function() { no.style.backgroundColor='#97BAEF'; }
   no.onmouseout = function() { no.style.backgroundColor='#D6E6FF'; }
   no.style.cursor='default';
   no.onclick=close_ask;
}

function submit_login() {
   document.getElementById('login_form').submit();
}

function init_login() {
         
if(document.getElementById('username')) {
   var user = document.getElementById('username');
   var pass = document.getElementById('password');
   var adnotam = document.getElementById('cookie');
   var login_button = document.getElementById('login_send');
      
   login_button.onmouseover = function() { login_button.style.backgroundColor='#97BAEF'; login_button.style.cursor='default'; }
   login_button.onmouseout = function() { login_button.style.backgroundColor='#D6E6FF'; }
   login_button.onclick = submit_login;

   user.onfocus = function() {
      user.style.border="1px solid black";
   }

   user.onblur = function() {
      user.style.border="1px solid #808080"; // ie complains about "grey" for some reason.
   }

   pass.onfocus = function() {
      pass.style.border="1px solid black";
   }

   pass.onblur = function() {
      pass.style.border="1px solid #808080";
   }
   
   // Enables use of return to send login form

   user.onkeypress = function(event) {

      if(!event) // ie shit.
         event = window.event;

      if(event.keyCode == 13) // user pressed return
         pass.focus()
   }

   pass.onkeypress = function(event) {

      if(!event)
         event = window.event;

      if(event.keyCode == 13) {
         document.getElementById('login_send').focus();
         submit_login();
      }
   }
   
   login_button.onkeypress = function(event) {

      if(!event)
         event = window.event;

      if(event.keyCode == 13)
         submit_login();
   }  
      
   adnotam.onkeypress = function(event) {

      if(!event)
         event = window.event;

      if(event.keyCode == 13) {
         document.getElementById('login_send').focus();
         submit_login();
      }
   }  

} // if

}

function open_print_window(url) {
   window.open(url);
} 

function init_button(id,func) {
   if(document.getElementById(id)) {
      var button = document.getElementById(id);
      button.onclick = function() { eval(func); }
      button.onmouseover = function() { button.style.backgroundColor='#97BAEF'; button.style.cursor='default'; }
      button.onmouseout = function() { button.style.backgroundColor='#D6E6FF'; }
   }
}

function init_tab(id,func,color_on,color_out) {
   if(document.getElementById(id)) {
      var button = document.getElementById(id);
      button.onclick = function() { eval(func); }
      button.onmouseover = function() { button.style.backgroundColor=color_on; button.style.cursor='pointer'; }
      button.onmouseout = function() { button.style.backgroundColor=color_out; }
   }
}

function submit_form(id) {
   document.getElementById(id).submit();
}
