var INIHIGH=0;

function isempty(oCtrl) {
  var oRE=new RegExp("^ *$");
  return(oRE.test(oCtrl.value));
}

// Change any HTML element through AJAX
function changeElement(sURL,sId) {
  var oXHR=getHttpObject();

  document.body.style.cursor="wait";

  oXHR.onreadystatechange=function() {
    if(oXHR.readyState==4) {
      var sTxt="";
      var sErr="";
      if(oXHR.status==200) {
        sTxt=oXHR.responseText;
        if(sTxt.match(/^err\d+/)) { sErr=sTxt; }
      }
      else { sTxt=oXHR.statusText; }
      if(sErr=="") {
        document.getElementById(sId).innerHTML=sTxt;
        if(sId=="filman") {
          FM_on();
          FM_setstatus("");
        }
        else if(sId=="instlog") {
          if(document.getElementById("homepage")) { document.getElementById("homepage").style.visibility="visible"; }
        }
        document.body.style.cursor="";
      }
      else { window.location.search="?error="+sErr; }
    }
  };

  oXHR.open("GET",sURL,true);
  oXHR.send(null);
}

// HTTP object for AJAX
function getHttpObject() {
  var oObj=false;

  try { oObj=new ActiveXObject("Msxml2.XMLHTTP"); }
  catch(e) {
    try { oObj=new ActiveXObject("Microsoft.XMLHTTP"); }
    catch(e) { oObj=new XMLHttpRequest(); }
  }

  return oObj;
}

function doPostDOM(oForm) {
  var sQry="";
  var aInp=oForm.getElementsByTagName('input');
  var aTxt=oForm.getElementsByTagName('textarea');
  for(var i=0;i<aInp.length;i++) {
    var oC=aInp[i];
    var sT=oC.getAttribute("type");
    var sK=oC.getAttribute("name");
//  var sV=oC.getAttribute("value");
    var sV=oC.value;
//  alert(sT+"/"+sK+"/"+sV);
    if((sT=="checkbox") || (sT=="radio")) {
      if(oC.checked) { sQry=sQry+((sQry=="") ? "" : "<br />")+sK+"="+sV; }
    }
    else { sQry=sQry+((sQry=="") ? "" : "<br />")+sK+"="+sV; }
  }
  for(var i=0;i<aTxt.length;i++) {
    var oC=aTxt[i];
    var sK=oC.getAttribute("name");
//  var sV=oC.firstChild.data;
    var sV=oC.value;
//  alert(sT+"/"+sK+"/"+sV);
    sQry=sQry+((sQry=="") ? "" : "<br />")+sK+"="+sV;
  }
//alert(encodeURI(sQry));
  document.getElementById('log2').innerHTML=sQry;
}

function doPost(oForm) {
  var sSep="<br />";
  var sQry="";
  for(var i=0;i<oForm.elements.length;i++) {
    var oC=oForm.elements[i];
    var sTag=oC.tagName;
    var sVal;
    var bVal=false;
    if((sTag=="INPUT") && ((oC.type=="checkbox") || (oC.type=="radio"))) {
      if(oC.checked) {
        sVal=oC.value;
        bVal=true;
      }
    }
    else if(sTag=="SELECT") {
      if(oC.selectedIndex>=0) {
        sVal=oC.options[oC.selectedIndex].value;
        bVal=true;
      }
    }
    else if((sTag=="INPUT") || (sTag=="TEXTAREA")) {
      sVal=oC.value;
      bVal=true;
    }
    if(bVal) { sQry=sQry+((sQry=="") ? "" : sSep)+oC.name+"("+oC.tagName+")="+sVal; }
  }
//alert(sQry);
//alert(encodeURI(sQry));
//document.getElementById('log').innerHTML=encodeURI(sQry);
  document.getElementById('log').innerHTML=sQry;
}

function showMsg(sTxt,sImg) {
  var oLog=document.getElementById('log');
  oLog.innerHTML="<div>"+sTxt+"</div>";
  oLog.innerHTML+="<div class=\"hide\"><a href=\"#\" title=\"hide message\" onclick=\"document.getElementById('log').style.display='none';\">hide <img src=\""+sImg+"/close.png\" alt=\"hide message\" title=\"hide message\" /></a></div>";
  oLog.style.display="block";
}

function validID(sVal) {
  var oRE=/^[a-z][a-z0-9_]*$/i;
  return(oRE.test(sVal));
}

function isChecked(oForm,sName) {
  var nRet=0;

  for(var i=0;i<oForm.elements.length;i++) {
    var oC=oForm.elements[i];
    if((oC.name==sName) && oC.checked) { nRet++; }
  }

  return(nRet);
}

function isEmpty(s) {
  return((s==undefined) || s.match(/^ *$/));
}

function trim(s) {
  return(s.replace(/^ +/,"").replace(/ +$/,""));
}

function hEnter(oFld,event) {
  var bRet=true;
  var nKC=event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
  if(nKC==13) {
    if(oFld.form.name=="login") {
      var sName=oFld.name;
      if(sName=="usr") { document.getElementById('pwd').focus(); }
      else if(sName=="pwd") { oFld.form.submit(); }
      bRet=false;
    }
    else if(oFld.form.name=="question") {
      var sId=oFld.id;
      if(sId.match(/^dc_/)) {
        var sFoc=sId;
        var oTab=document.getElementById('tabdict');
        if(sId=="dc_name") { sFoc=oTab.rows[1].cells[0].getElementsByTagName('input')[0].id; }
        else if(sId.match(/^dc_[0-9]+_name$/)) { sFoc=sId.replace(/_name$/,"_tag"); }
        else if(sId.match(/^dc_[0-9]+_tag$/)) { sFoc=sId.replace(/_tag$/,"_label"); }
        else if(sId.match(/^dc_[0-9]+_label$/)) {
          var nR=oFld.parentNode.parentNode.rowIndex;
          if(nR==oTab.rows.length-2) { sFoc=""; }
          else { sFoc=oTab.rows[nR+1].cells[0].getElementsByTagName('input')[0].id; }
        }
        if(sFoc=="") { addElmt(); }
        else { document.getElementById(sFoc).focus(); }
      }
      bRet=false;
    }
  }

  return(bRet);
}

function tabClick(sTab) {
  var oTab=document.getElementById(sTab);
  if(oTab) {
    for(var i=0;i<oTab.rows.length;i++) {
      oTab.rows[i].className="clickrow";
      oTab.rows[i].onclick=function() {
        if(this.cells[0].getElementsByTagName('input').length>0) { this.cells[0].getElementsByTagName('input')[0].checked=true; }
        else if(this.cells[0].getElementsByTagName('a').length>0) { window.location.href=this.cells[0].getElementsByTagName('a')[0].getAttribute('href'); }
      };
    }
  }
}

function blinkff() {
  var oFF=document.getElementById('firefox');
  var nTO=1800;
  if(oFF.style.visibility=="hidden") { oFF.style.visibility="visible"; }
  else {
    oFF.style.visibility="hidden"; 
    nTO=200;
  }
  setTimeout("blinkff();",nTO);
}

function iniForm(oForm) {
  for(var i=0;i<oForm.elements.length;i++) {
    var oC=oForm.elements[i];
    if((oC.tagName=="INPUT") && ((oC.type=="radio") || (oC.type=="checkbox"))) {
      var s=oC.getAttribute('onclick');
      if(s!=null) { oC.setAttribute('onclick',s+' chgform();'); }
      else { oC.onclick=chgform; }
    }
    else if(
      ((oC.tagName=="INPUT") && (oC.type=="text")) ||
      ((oC.tagName=="SELECT") && (oC.name!="qdlist")) ||
      (oC.tagName=="TEXTAREA")
    ) {
      var s=oC.getAttribute('onchange');
      if(s!=null) { oC.setAttribute('onchange',s+' chgform();'); }
      else { oC.onchange=chgform; }
      if(oC.tagName!="TEXTAREA") { oC.setAttribute('onkeypress','return(hEnter(this,event));'); }
    }
  }
}

function chgform() {
  if(document.getElementById('log')) { document.getElementById('log').style.display='none'; }
  if(!CHANGED) {
    CHANGED=true;
    var sVis='document.getElementById("imgsave").style.visibility="visible"';
    var sHid=sVis.replace(/visible/,"hidden");
    eval(sVis);
    window.setTimeout(sHid,200);
    window.setTimeout(sVis,300);
    window.setTimeout(sHid,500);
    window.setTimeout(sVis,600);
  }
}

function Ok() {
  return(!CHANGED || confirm("The changes you've done haven't been saved yet. Click [OK] to continue without saving them..."));
}

function rmProject(sProj) {
  return(confirm("WARNING: You're about to DEFINITELY remove project ["+sProj+"]! Click [OK] to remove this project...") ? confirm("This is the last warning: click [OK] to PERMANENTELY remove project ["+sProj+"]!") : false);
}

function mvProject(sProj) {
  alert("This facility is not yet fully implemented. Meanwhile you can rename a project by creating a new project using ["+sProj+"] project as template and then delete ["+sProj+"] project.");
}

function addIni(nPos,sKey,sValue) {
  var oTab=document.getElementById('tabini');
  if(nPos==null) { nPos=oTab.rows.length-2; }
  var oRow=oTab.insertRow(nPos+1);

  if(sKey==null) { sKey=""; }
  if(sValue==null) { sValue=""; }

  INIHIGH++;

  oRow.insertCell(0).innerHTML="<input id=\"ud_"+String(INIHIGH)+"_key\" name=\"ud_"+String(INIHIGH)+"_key\" value=\""+sKey+"\" class=\"ff\" size=\"15\" title=\"Key\" onchange=\"chgform();\" onkeypress=\"return(hEnter(this,event));\" />";
  oRow.insertCell(1).innerHTML="<input id=\"ud_"+String(INIHIGH)+"_value\" name=\"ud_"+String(INIHIGH)+"_value\" value=\""+sValue+"\" class=\"ff\" size=\"20\" title=\"Value\" onchange=\"chgform();\" onkeypress=\"return(hEnter(this,event));\" />";

  var sSrc=document.getElementById('addimg').getAttribute('src').replace(/add\.png$/,"");
  oRow.insertCell(2).innerHTML="<img src=\""+sSrc+"/add.png\" alt=\"Insert a new setting\" title=\"Insert a new setting\" class=\"click\" onclick=\"addIni(this.parentNode.parentNode.rowIndex-1);\" /><img src=\""+sSrc+"/delete.png\" alt=\"Remove setting\" title=\"Remove setting\" class=\"click\" onclick=\"delIni(this.parentNode.parentNode.rowIndex-1);\" />";

  if((INIHIGH>1) && isEmpty(sKey)) { document.getElementById('ud_'+String(INIHIGH)+'_key').focus(); }
}

function delIni(nPos) {
  var oTab=document.getElementById('tabini');
  oTab.deleteRow(nPos+1);
  if(oTab.rows.length<3) { addIni(); }
  chgform();
}

