
var domain = ".dev.humansyn.nl";

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

function setSecureCookie(name,value,days) {
        if (days) {
                var date = new Date();
                date.setTime(date.getTime()+(days*24*60*60*1000));
                var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/; domain="+domain+"; secure";
}

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

function eraseCookie(name) {
        createCookie(name,"",-1);
}

if(!document.getElementById){
  if(document.all)
  document.getElementById=function(){
    if(typeof document.all[arguments[0]]!="undefined")
    return document.all[arguments[0]]
    else
    return null
  }
  else if(document.layers)
  document.getElementById=function(){
    if(typeof document[arguments[0]]!="undefined")
    return document[arguments[0]]
    else
    return null
  }
}

function checkRange(elmnt) {
  if (elmnt.value.length < elmnt.getAttribute('maxlength')) return;
  var range = elmnt.getAttribute('title');
/*  range = "2,3"; */
  var rangeRegxp =  new RegExp( '^([' + range + '])$' );

  if (rangeRegxp.test(elmnt.value) != true) {
    elmnt.value = "";
    return;
  }
}

function textElement(n) {


  var dd=document.getElementById("survey").getElementsByTagName("dd");
  for(var i=0;i<dd.length;i++) {
    var j=i + Number(n);
//  input=document.createElement('<input type="text" id="tq2" value="" tabindex="2" size="1" maxlength="1" title="1-3" onkeyup="selectUpdate(this,1,3,1);" />');
  input=document.createElement('input');
  input.setAttribute('title','1-3');
  input.setAttribute('tabindex',(i+1));
  input.setAttribute('maxlength','1');
  input.setAttribute('size','1');
  input.setAttribute('value','');
  input.setAttribute('id','tq' +j);
  input.setAttribute('name','tq' +j);
  dd[i].appendChild(input);
  }
}
function putFocus(elmnt) {

/*
  var jst=document.getElementById("survey").getElementsByTagName("input");
  for(var i=0;i<jst.length;i++) {
    jst[i].style.display="inline";
  }
*/

  var focusElmnt = document.getElementById(elmnt)
  focusElmnt.focus(); 
  focusElmnt.select();
}

function textUpdate(elmnt) {
  var value = elmnt.value;
  var textId;
  if (elmnt.name.slice(0,1) == "t") {
    textId = elmnt.name;
  } else {
    textId = "t" + elmnt.name;
  }
  var textElmnt = document.getElementById(textId);
  if (textElmnt.type == "text") { 
    textElmnt.value = value;
    if (textElmnt.value.length < textElmnt.getAttribute('maxlength')) return;
    nextTabIndex(elmnt);
  } 
}

function radioUpdate(elmnt) {
  checkRange(elmnt);
  if (elmnt.value.length < elmnt.getAttribute('maxlength')) return;
  var value = elmnt.value;
  var radioId = elmnt.name.substring(1) + "-" + value;
  var radioElmnt = document.getElementById(radioId); 
  radioElmnt.checked = true; 
  nextTabIndex(elmnt);
}

var optionsUsed = new Array();
var index = optionsUsed.length;
for (var grp=1;grp<=4;grp++) optionsUsed[grp] = new Array();

function selectUpdate(elmnt,a,z,grp) {
  orgValue = -1;
  checkRange(elmnt); 
  if (elmnt.value.length < elmnt.getAttribute('maxlength')) return; 
  var value = elmnt.value;
  if (!value) value = 0;
  var selectId;
  if (elmnt.name.slice(0,1) == "t") {
    selectId = elmnt.name.substring(1);
  } else {
    selectId = elmnt.name;
  }
  var selectElmnt = document.getElementById(selectId);
  var q = Number(selectId.substring(1));
  var n = selectElmnt.length;
  for (var i=0;i<=n;i++) {
    if (selectElmnt.options[i] && value == selectElmnt.options[i].value) {  
      selectElmnt.selectedIndex = i;
      if (!optionsUsed[grp][q-a]) { 
        optionsUsed[grp][q-a] = value;
//    	alert("DEBUG : optionUsed array\n assigning value: " + optionsUsed[grp][q-a] + "\n array state: optionsUsed[" + grp + "][" +(q-a)+"]\n element value: " + value);
      }
      else {
        orgValue = optionsUsed[grp][q-a];
//      alert("DEBUG : assigning original selected value " + orgValue + "\n array state: optionsUsed[" + grp + "][" +(q-a)+"]");
        optionsUsed[grp][q-a] = value;
      }
    }
  }
  var len;
  for (var u=a;u<=z;u++) {
    var selectReplace = document.getElementById("q" + u);
    if (u != q) {
      if (orgValue == "0") orgValue = "-1";
      if (orgValue && orgValue !="-1") { 
//        alert("DEBUG option being replaced: \ngroup " + grp + "\nq" + u + " create value " + orgValue); 
        appendOption(selectReplace,orgValue,orgValue);
      }
      len = selectReplace.length;
      var k;
      for (var j=0;j<len;j++) {
        k=selectReplace.options[j].value;
        if (k==value && value != "0") {
//          alert("DEBUG no options used: options N=" + len + "\nq" + u + " remove index " + selectReplace.options[j].index + " @ value " + k + "\ngroup " + grp);  
          var replaceIndex = j;
          selectReplace.remove(j); 
          break;
        }
      }
      updateListRange(selectReplace);
    }
  }
  checkRange(elmnt);
  textUpdate(elmnt);
  if (value != "0") nextTabIndex(elmnt);
}

function nextTabIndex(elmnt) {
  elmnt.setAttribute('autocomplete','off'); 
  var item;
  if (elmnt.name.slice(0,1) == "t") {
    item = elmnt.name.substring(2);
  } else {
    item = elmnt.name.substring(1);
  }
  var nextId = "tq" + (Number(item) + 1);
  var nextTab = document.getElementById(nextId);
  if (nextTab && nextTab.type == "text") {
    nextTab.setAttribute('autocomplete','off'); 
    nextTab.select();
    nextTab.focus();
  }
}

function updateListRange(elmnt) {
  var textId;
  var selectElmnt;
  if (elmnt.name.slice(0,1) == "t") {
    textId = elmnt.name;
    selectElmnt = document.getElementById(elmnt.name.substring(1)); 
  } else {
    textId = "t" + elmnt.name;
    selectElmnt = elmnt;
  }
  var textElmnt = document.getElementById(textId);
  var range = '';
  for (i=0;i<elmnt.length;i++) {
    if (elmnt.options[i].text > 0) {
    range = range + elmnt.options[i].text;
    }
  }
  var newRange = range.split("");
//  if (newRange.slice(0,1) == ",") alert(elmnt.name + " , " + newRange); 
  textElmnt.setAttribute("title",newRange);
  selectElmnt.setAttribute("title",newRange);
//  alert(elmnt.name + " : " + newRange);
}

function updateRange(maxRange,a,z,grp) {
  var grpId = document.getElementById("grp" + grp);
  var tqId;
  for (var i=a;i<=z;i++) {
    tqId = document.getElementById("tq" + i);
    if (maxRange == "0" && tqId.value == "") {
       tqId.setAttribute('value','0');
       tqId.setAttribute('tabindex','');
    }
    if (maxRange > 0 && tqId.value == "0") {
       tqId.setAttribute('value','');
    }
    tqId.setAttribute("title","0-" + maxRange);
    grpId.value = maxRange;
  }
}

function updateCount(a,z,grp) {
  var grpId = document.getElementById("grp" + grp);
  var total = 5;
  var curScore = 0;
  var tqId;
  for (var i=a;i<=z;i++) {
    tqId = document.getElementById("tq" + i);
    if (curScore < total) {
     curScore = curScore + Number(tqId.value);
    }
  }
  updateRange((total - curScore),a,z,grp);
}

function lis1calc(elmnt) {
  checkRange(elmnt);
  textUpdate(elmnt);
  nextTabIndex(elmnt);
}

function lis3calc(elmnt,a,z,grp) {
  elmnt.setAttribute('autocomplete','off'); 
  checkRange(elmnt);
  if (elmnt.value.length < elmnt.getAttribute('maxlength')) return;
  updateCount(a,z,grp);
  nextTabIndex(elmnt);
}

function appendOption(selectElmnt, newText, newValue)
{
  var name = selectElmnt.name;
//  alert("DEBUG append options: " + name + "\nselected index: " + selectElmnt.selectedIndex + "\nlength: " + selectElmnt.length); 
  if (selectElmnt.selectedIndex == -1) selectElmnt.selectedIndex = 0;
  var selectedValue = selectElmnt.value;
  if (selectElmnt.length == 0) {
    var newOpt1 = new Option(newText, newValue);
    selectElmnt.options[0] = newOpt1;
    selectElmnt.selectedIndex = 0;
  } else if (selectElmnt.selectedIndex != -1) {
    var selText = new Array();
    var selValues = new Array();
    var newCount = -1;
    var newSelected = -1;
    for(i=0; i<selectElmnt.length; i++)
    {
      newCount++;
      selText[newCount] = selectElmnt.options[i].text;
      selValues[newCount] = selectElmnt.options[i].value;


      if (newCount == selectElmnt.selectedIndex) {
        newCount++;
        selText[newCount] = newText;
        selValues[newCount] = newValue;
        newSelected = newCount;
      }

    }

    selText.sort(sortNumber);
    selValues.sort(sortNumber);

//alert("DEBUG Creating option: " + name + " append option: " + newValue + "\nselected index was: " + selectElmnt.selectedIndex + " and is: " + newSelected + "\noptions N=" + selectElmnt.length);

    for(i=0; i<=newCount; i++)
    {
      var newOpt = new Option(selText[i], selValues[i]);
      selectElmnt.options[i] = newOpt;
      if ( selectElmnt.options[i].value == selectedValue) {
        selectElmnt.options[i].selected = i; 
//alert("DEBUG append options: " + name + " = " +selectedValue + "\nselected index " +i + " : " +selectElmnt.options[i].selected + " display value: " + selectElmnt.options[i].value + "\nnewSelected = " + newSelected);      
      }
    }
  }
}
function sortNumber(a, b)
{
return a - b;
}


