//==============
//Description: Form's Elements Lib
//==============
//ProcList:
/*
  CheckElement
  CheckEltisNaN
  SetElement
*/

function SetElement(){
  var fname = arguments[0];
  var eltname = arguments[1];
  var eltpro = arguments[2];
  var eltvalue = arguments[3];
  var inarray = arguments[4];

  if(inarray && inarray != undefined){
    fname = fname + '_' + inarray;
  }

  var tFuncExists = (typeof(SetUnSetDelBut) == 'function') ? 1 : 0;
  var elts=document.forms[fname].elements[eltname];
  var eltsnum=(typeof(elts.length)!='undefined' ? elts.length : 0);
  if(eltsnum){
    for(var i=0; i<eltsnum; i++){
      if(tFuncExists && elts[i][eltpro] != eltvalue){
        SetUnSetDelBut(eltvalue, inarray);
      }
      elts[i][eltpro]=eltvalue;
    }
  }else{
    if(tFuncExists && elts[eltpro] != eltvalue){
      SetUnSetDelBut(eltvalue, inarray);
    }
    elts[eltpro]=eltvalue;
  }
}

function CheckElement(fname, eltname, msg){
  var elts=document.forms[fname].elements[eltname];
  if((elts['value']=='') || (elts['value']==0)){
    alert(msg);
    elts.focus();
    return false;
  }else{
    return true;
  }
}

function CheckEltisNaN(fname, eltname, eltpro, msg){
  var elts=document.forms[fname].elements[eltname];
  intval=parseInt(elts[eltpro]);
  if(isNaN(intval)){
    alert(msg);
    elts.focus();
    return false;
  }else{
    return true;
  }
}

//==============
//Description: theme kusa
//==============

//body
function eraseTA(obj){
if (obj.value == obj.defaultValue) obj.value = "";}

function changeClass(){
document.getElementById("login_adress").className = "login_nomal";
}

function changeClass2(oj) {
  if (!oj.value) {
    changeClass2[oj.name] = false
    document.getElementById("login_adress").className = "login_adress";
  } else {
    changeClass2[oj.name] = true
  document.getElementById("login_adress").className = "login_nomal";
  }
}

function changeClass3(){
document.getElementById("login_pass").className = "login_nomal";
}

function changeClass4(oj) {
  if (!oj.value) {
    changeClass2[oj.name] = false
    document.getElementById("login_pass").className = "login_pass";
  } else {
    changeClass2[oj.name] = true
  document.getElementById("login_pass").className = "login_nomal";
  }
}

//==============

//DropDownMenu
var TimeOut         = 100;
var currentLayer    = null;
var currentitem     = null;
var currentLayerNum = 0;
var noClose         = 0;
var closeTimer      = null;

function mopen(n) {
  var l  = document.getElementById("menu"+n);
  var mm = document.getElementById("mmenu"+n);

  if(l) {
    mcancelclosetime();
    l.style.visibility='visible';
    if(currentLayer && (currentLayerNum != n))
      currentLayer.style.visibility='hidden';
    currentLayer = l;
    currentitem = mm;
    currentLayerNum = n;
  } else if(currentLayer) {
    currentLayer.style.visibility='hidden';
    currentLayerNum = 0;
    currentitem = null;
    currentLayer = null;
  }
}

function mclosetime() {
  closeTimer = window.setTimeout(mclose, TimeOut);
}

function mcancelclosetime() {
  if(closeTimer) {
    window.clearTimeout(closeTimer);
    closeTimer = null;
  }
}

function mclose() {
  if(currentLayer && noClose!=1)   {
    currentLayer.style.visibility='hidden';
    currentLayerNum = 0;
    currentLayer = null;
    currentitem = null;
  } else {
    noClose = 0;
  }
  currentLayer = null;
  currentitem = null;
}

document.onclick = mclose;

//==============

//navi
function initRollovers() {
  if (!document.getElementById) return

  var aPreLoad = new Array();
  var sTempSrc;
  var aImages = document.getElementsByTagName('img');

  for (var i = 0; i < aImages.length; i++) {
    if (aImages[i].className == 'imgover') {
      var src = aImages[i].getAttribute('src');
      var ftype = src.substring(src.lastIndexOf('.'), src.length);
      var hsrc = src.replace(ftype, '_o'+ftype);
      aImages[i].setAttribute('hsrc', hsrc);
      aPreLoad[i] = new Image();
      aPreLoad[i].src = hsrc;
      aImages[i].onmouseover = function() {
        sTempSrc = this.getAttribute('src');
        this.setAttribute('src', this.getAttribute('hsrc'));
      }
      aImages[i].onmouseout = function() {
        if (!sTempSrc) sTempSrc = this.getAttribute('src').replace('_o'+ftype, ftype);
        this.setAttribute('src', sTempSrc);
      }
    }
  }
}

//==============

//tabchange
var tab = {
  init: function(){
    var tabs = this.setup.tabs;
    var pages = this.setup.pages;

    for(i=0; i<pages.length; i++) {
      if(i !== 0) pages[i].style.display = 'none';
      tabs[i].onclick = function(){ tab.showpage(this); return false; };
    }
  },

  showpage: function(obj){
    var tabs = this.setup.tabs;
    var pages = this.setup.pages;
    var num;

    for(num=0; num<tabs.length; num++) {
      if(tabs[num] === obj) break;
    }

    for(var i=0; i<pages.length; i++) {
      if(i == num) {
        pages[num].style.display = 'block';
        tabs[num].className = 'present';
      }
      else{
        pages[i].style.display = 'none';
        tabs[i].className = null;
      }
    }
  }
}

//==============
//Description: get_prsnlist system
//==============
//ProcList:
/*
  get_prsnlist_hide_all
  get_prsnlist_txt1
  get_prsnlist_txt2
  get_prsnlist_txt2_copy
  get_prsnlist_img1
  get_prsnlist_img1_check
  get_prsnlist_img2
  get_prsnlist_img2_done
*/

function get_prsnlist_hide_all(){
//author: igo
  document.getElementById('prf_main1').style.display='none';
  document.getElementById('prf_main2').style.display='none';
  document.getElementById('prf_main3').style.display='none';
  document.getElementById('prf_main4').style.display='none';

  return true;
}

//==============

function get_prsnlist_txt1(){
//author: igo
  get_prsnlist_hide_all();
  document.getElementById('prf_main1').style.display='block';

  return true;
}

//==============

function get_prsnlist_txt2(){
//author: igo
  var i=1;
  var check_checked=0;
  while(document.getElementById('tcheck_' + i)!=undefined){
    txt = document.getElementById('txt_' + i);
    txt.style.display = 'none';
    if(document.getElementById('tcheck_' + i).checked===true){
      check_checked++;
      txt.style.display = 'block';
    }
    i++;
  }

  if(!check_checked){
    alert(s_prsnlist_astxt_txt2_err);
    return false;
  }

  get_prsnlist_hide_all();
  document.getElementById('prf_main2').style.display='block';

  return true;
}

//==============

function get_prsnlist_txt2_copy(PrsnList){
//author: igo
//author: ssh4

  var WithPrefix=arguments[1];

  //forming output data
  var dat='';
  var i=1;

  if(WithPrefix){
    dat += PrsnList[0];
  }

  while(document.getElementById('tcheck_' + i)!=undefined){
    if(WithPrefix){
      if(document.getElementById('tcheck_' + i).checked===true){
        dat += PrsnList[i];
      }
    }else{
      if(document.getElementById('tcheck_' + i).checked===true){
        dat += PrsnList[i-1];
      }
    }
    i++;
  }

  if (window.clipboardData && window.clipboardData.setData) {
      window.clipboardData.setData("Text", dat);
      return true;
  }
  else {
      try {
          netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
      }
      catch (e) {
          return false;
      }
      var clipboard = Components.classes["@mozilla.org/widget/clipboard;1"].getService();
      if (clipboard) {
          clipboard = clipboard.QueryInterface(Components.interfaces.nsIClipboard);
      }
      var transferable = Components.classes["@mozilla.org/widget/transferable;1"].createInstance();
      if (transferable) {
          transferable = transferable.QueryInterface(Components.interfaces.nsITransferable);
      }
      if (clipboard && transferable) {
          var textObj = new Object();
          var textObj = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
          if (textObj) {
              textObj.data = content;
              transferable.setTransferData("text/unicode", textObj, content.length*2);
              var clipid=Components.interfaces.nsIClipboard;
              clipboard.setData(transferable,null,clipid.kGlobalClipboard);
              return true;
          }
      }
      return false;
  }

  return true;
}

//==============

function get_prsnlist_img1(){
//author: igo
  get_prsnlist_hide_all();
  document.getElementById('prf_main3').style.display='block';
  document.getElementById('paste_img').innerHTML=s_prsnlist_asimg2_loading;

  return true;
}

//==============

function get_prsnlist_img1_check(o){
//author: igo
//author: ssh4

  var sum=0;
  var i=1;

  var maxnum = (typeof(g_prsnlist_max_num) != 'undefined' && g_prsnlist_max_num) ? g_prsnlist_max_num : 5;
  while(document.getElementById('icheck_' + i)!=undefined){
    if(document.getElementById('icheck_' + i).checked===true){
      sum++;
    }
    i++;
  }
  if(sum > maxnum){
    o.checked=false;
    alert(s_prsnlist_asimg_check_max);
  }

  return true;
}

//==============

function get_prsnlist_img2(){
//author: igo
  var prsns='';
  var sum=0;
  var i=1;
  while(document.getElementById('icheck_' + i)!=undefined){
    if(document.getElementById('icheck_' + i).checked===true){
      sum++;
      prsns += '1';
    }else{
      prsns += '0';
    }
    i++;
  }
  if(sum<1){
    alert(s_prsnlist_asimg_check_min);
    return false;
  }
  if(sum>10){
    alert(s_prsnlist_asimg_check_max);
    return false;
  }

  $.get(gRootUrl+'index.php?app=user&event=ajax_prsnlist_img_create&prsns='+prsns, get_prsnlist_img2_done);

  get_prsnlist_hide_all();
  document.getElementById('prf_main4').style.display='block';

  return true;
}

//==============

function get_prsnlist_img2_done(data){
//author: igo
  document.getElementById('paste_img').innerHTML=data;

  return true;
}

//==============
//Description: common
//==============

var SelDel = new Array();
function SetUnSetDelBut(){

  var tArInd = arguments[1];
  var tFormN = (tArInd && tArInd != undefined) ? 'delbutform_' + tArInd : 'delbutform';
  var tDlInd = (tArInd && tArInd != undefined) ? tArInd : 0;

  if(SelDel[tDlInd] == undefined){
    SelDel[tDlInd] = 0;
  }

  if(arguments[0]){
    SelDel[tDlInd]++;
  }else if(SelDel[tDlInd] > 0){
    SelDel[tDlInd]--;
  }

  if(document.forms[tFormN] == undefined || document.forms[tFormN].DeleteBut == undefined){
    return;
  }
  if(SelDel[tDlInd]){
    document.forms[tFormN].DeleteBut.disabled = false;
  }else{
    document.forms[tFormN].DeleteBut.disabled = true;
  }
}

//==============

var ExactElems = new Array('text');

function SetFocusOnForm(){
  CntFrms = document.forms.length;

  for(i=1; i<=CntFrms; i++){
    CntElms = document.forms[i-1].elements.length;
    tEx = false;
   for(a=0; a < arguments.length; a++){
        if(arguments[a] == document.forms[i-1].name){
            tEx = true;
            break;
        }
    }
    if(tEx){
        continue;
    }

    for(j=1; j<=CntElms; j++){
      ElmsType = document.forms[i-1].elements[j-1].type;

      for(k=0; k<ExactElems.length; k++){
        if(ElmsType == ExactElems[k]){
          document.forms[i-1].elements[j-1].focus();
          return;
        }
      }
    }
  }
}

//==============

var SelectElem = new Array('textarea');

function SetTextAreaFocus(){
    CntFrms = document.forms.length;
  for(i=1; i<=CntFrms; i++){
    CntElms = document.forms[i-1].elements.length;
    tEx= false;
   for(a=0; a < arguments.length; a++){
        if(arguments[a] == document.forms[i-1].name){
            tEx = true;
            break;
        }
    }
    if(tEx){
      for(j=1; j<=CntElms; j++){
        ElmsType = document.forms[i-1].elements[j-1].type;
        for(k=0; k<SelectElem.length; k++){
          if(ElmsType == SelectElem[k]){
            document.forms[i-1].elements[j-1].focus();
            return;
          }
        }
      }
    }
  }
}

//==============

function ChooseLen(){
  len   = arguments[0];
  ename = arguments[1];
  fname = arguments[2];
  mess  = arguments[3];
  area = arguments[4];

  M = document.getElementById(ename).value.length;
  if(M > len){
    if(document.getElementById('alert')){
      document.getElementById('alert').innerHTML="<font color='red'><b>"+ mess +"</b></font>";
    }
  }else{
    if(document.getElementById('alert')){
      document.getElementById('alert').innerHTML="";
    }
  }
  if(M > len+10){
    if(document.getElementById(ename)){
      document.getElementById(ename).value = document.getElementById(ename).value.substring(0,len+10);
      M=len+10;
    }
  }
  if(fname != undefined){
    document.forms[fname].count.value = len-M;
  }
}

//==============

var brws=navigator.userAgent.toLowerCase();
if(brws.indexOf('firefox') != -1){
  brws='FF';
}else{
  brws=false;
}

function ImgTipShow(e, im){
  desc=document.images[im].alt;
  px=0;
  py=0;
  if(desc != ''){
    if(brws == 'FF'){
      if(navigator.appName == 'Netscape'){
        px=e.pageX;
        py=e.pageY;
      }else{
        px=e.x;
        py=e.y;
      }

      if(document.getElementById){
        TTipWdth = document.getElementById('TTip').style.width;
        TTipWdth = TTipWdth.substr(0, TTipWdth.indexOf('px'));
        document.getElementById('TTip').innerHTML='<table id="back3" width="150"><tr><td id="back9"><i>' + desc + '</i></td></tr></table>';
        document.getElementById('TTip').style.left=(px-TTipWdth-5) + 'px';
        document.getElementById('TTip').style.top=(py+5) + 'px';
        document.getElementById('TTip').style.visibility='visible';
      }
    }else{
      document.images[im].title=desc;
    }
  }
}

function ImgTipHide(){
  if(brws == 'FF' && document.getElementById){
    document.getElementById('TTip').innerHTML='';
    document.getElementById('TTip').style.left=0 + 'px';
    document.getElementById('TTip').style.top=0 + 'px';
    document.getElementById('TTip').style.visibility='hidden';
  }
}

//==============

function DsblEnbl(){
  var Direction = false;
  if(arguments && arguments.length){
    Direction = arguments[0];
  }

  for(i=1; i<arguments.length; i++){
    document.getElementById(arguments[i]).disabled=Direction;
  }
}

//==============

function get_code(wcode, wcode2, qurl){
  var israndom=false;

  if(wcode2 == 'undifined'){
    wcode2='';
    israndom=true;
  }else if(wcode2 == ''){
    israndom=true;
  }
  if(qurl == 'undifined'){
    qurl='';
  }
  elem=document.getElementById('big');
  if(elem && elem.checked==true){
    wgheight = (israndom)?360:340;
    tmpc='<iframe src="'+wcode+'/1'+wcode2+'" height="' + wgheight + '" width="350" frameborder="0" scrolling="no" style="border: none; padding: 0;" allowtransparency="true"></iframe>';
    document.getElementById('textarea').value=tmpc;
    document.getElementById('sframe').innerHTML=tmpc;
    return false;
  }
  elem=document.getElementById('url');
  if(elem && elem.checked==true){
    document.getElementById('textarea').value=qurl;
    document.getElementById('sframe').innerHTML=qurl;
    return false;
  }
  elem=document.getElementById('small');
  if(elem && elem.checked==true){
    wgheight = (israndom)?385:350;
    tmpc='<iframe src="'+wcode+'/0'+wcode2+'" height="' + wgheight + '" width="160" frameborder="0" scrolling="no" style="border: none; padding: 0;" allowtransparency="true"></iframe>';
    document.getElementById('textarea').value=tmpc;
    document.getElementById('sframe').innerHTML=tmpc;
    return false;
  }
}

//==============

function set_clipboard(){
 var dat=document.getElementById('textarea').value;

  if (window.clipboardData && window.clipboardData.setData) {
      window.clipboardData.setData("Text", dat);
      return true;
  }
  else {
      try {
          netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
      }
      catch (e) {
          return false;
      }
      var clipboard = Components.classes["@mozilla.org/widget/clipboard;1"].getService();
      if (clipboard) {
          clipboard = clipboard.QueryInterface(Components.interfaces.nsIClipboard);
      }
      var transferable = Components.classes["@mozilla.org/widget/transferable;1"].createInstance();
      if (transferable) {
          transferable = transferable.QueryInterface(Components.interfaces.nsITransferable);
      }
      if (clipboard && transferable) {
          var textObj = new Object();
          var textObj = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
          if (textObj) {
              textObj.data = content;
              transferable.setTransferData("text/unicode", textObj, content.length*2);
              var clipid=Components.interfaces.nsIClipboard;
              clipboard.setData(transferable,null,clipid.kGlobalClipboard);
              return true;
          }
      }
      return false;
  }
}

//==============

function select_all(zone) {
  if (zone != '') {
    zone += " ";
  }
  $(zone+"input[@type=checkbox]").attr("checked", 1);
  return false;
}

//==============

function unselect_all(zone) {
  if (zone != '') {
    zone += " ";
  }
  $(zone+"input[@type=checkbox]").attr("checked", 0);
  return false;
}

//==============

function addElement() {
  var uf = document.getElementById('qzoadd');
  // Создаём новое поле для выбора файла
  var newTr = document.createElement('tr');
  var newTd = document.createElement('td');
  var newFile = document.createElement('input');



  var fileIdName = 'myFile'+Math.random(); //Случайное имя
  newFile.setAttribute('id',fileIdName);
  newFile.setAttribute('name',fileIdName);
  newFile.setAttribute('type','text');
  newFile.setAttribute('size','50');

  // при выборе файла данное поле тоже должно добавлять еще одно поле
  newFile.setAttribute('onClick','addElement()');
  newFile.onclick = addElement;

  uf.appendChild(newTr);
  uf.appendChild(newTd);
  uf.appendChild(newFile);
}

function ClearAnsw(fname, aid, kk) {
  M = document.forms[fname].elements['ownansw[' + aid + ']'].value;
  if(M==kk){
    document.forms[fname].elements['ownansw[' + aid + ']'].value='';
  }
}

//==============

function EnblDsblRadio(fname, aid) {
   M = document.forms[fname].elements['ownansw[' + aid + ']'].value;
   if(M==''){
     for(i=0; i < document.forms[fname].elements['answ[' + aid + ']'].length; i++){
       document.forms[fname].elements['answ[' + aid + ']'][i].disabled = false;
     }
   }else{
     for(i=0; i < document.forms[fname].elements['answ[' + aid + ']'].length; i++){
       document.forms[fname].elements['answ[' + aid + ']'][i].disabled = true;
     }
   }
}

//==============

function EnblDsblField(chkname, fldname, num, kk){

   if(typeof(num) != "undefined" && num != ""){
     chkname= chkname+num;
     fldname=fldname+num;
   }
   if(document.getElementById(chkname)){
    try{
      K = document.forms['quiz'].elements['ownansw[' + num + ']'].value;
    }catch(e){
      K = 'no';
    }
    if(document.getElementById(chkname).type == 'checkbox'){
      M = document.getElementById(chkname).checked;
    }else{
      M = (document.getElementById(chkname).value == 'own'
            && document.getElementById(chkname).checked) ? 1 : 0;
    }
    if(M==true){
      document.getElementById(fldname).disabled=false;
      if(K!='no'){
        ClearAnsw('quiz', num, kk);
      }
    }else{
      document.getElementById(fldname).disabled=true;
      if(K==''){
        document.forms['quiz'].elements['ownansw[' + num + ']'].value=kk;
      }
    }
   }
}

//==============

function EnblDsblCheckBox(cont, name, aid) {
  var inpts=cont.getElementsByTagName("INPUT");
  k='own'+aid;
  M = document.forms['quiz'].elements[k].checked;
  name='answ[' + aid +'][]';
  if(M==false){
    for(var i=0; i<inpts.length; i++)
      if(inpts[i].type=="checkbox" && (name==null||inpts[i].name==name)) inpts[i].disabled=false;

  }else{
    for(var i=0; i<inpts.length; i++)
      if(inpts[i].type=="checkbox" && (name==null||inpts[i].name==name)) inpts[i].disabled=true;
  }
}

//==============

function ShowHideFields(){
  var ObjPrnt = arguments[0]; //Object where should be shown or hidden fields
  var ClsName = arguments[1]; //Check for this class name
  var NumName = arguments[2]; //Flag field name
  var ShwFlds = arguments[3]; //Default value (active or doesn't)

  if(ObjPrnt && typeof(ObjPrnt) != 'object'){
    ObjPrnt = document.getElementById(ObjPrnt);
  }
  if(!ObjPrnt || typeof(ObjPrnt) != 'object' || !ObjPrnt.childNodes || !ObjPrnt.childNodes.length){
    return false;
  }

  ObjPrnt = ObjPrnt.childNodes;

  for(var p = 0; p < ObjPrnt.length; p++){
    if(ObjPrnt[p] && typeof(ObjPrnt[p]) == 'object'){
      if(ObjPrnt[p].className == 'clearfix '+ClsName){
        if((typeof(ShwFlds) == 'undefined' && ObjPrnt[p].style.display == 'none') || (typeof(ShwFlds) != 'undefined' && ShwFlds != 0)){
          ObjPrnt[p].style.display = 'block';
          var tHiddenVal = 1;
        }else{
          ObjPrnt[p].style.display = 'none';
          var tHiddenVal = 0;
        }
        if(document.getElementById(NumName)){
          document.getElementById(NumName).value = tHiddenVal;
        }
      }else if(ObjPrnt[p] && ObjPrnt[p].childNodes){
        ShowHideFields(arguments);
      }
    }
  }

  return true;
}

//==============

function GridFormAll_AddItem(){
  var VarRepl = arguments[0]; //String OR Object - what should be replaced in JS-variable
  var Counter = arguments[1]; //Id of counter - how many items in parent html-element
  var TabName = arguments[2]; //Id of html-element where should be placed (parent)
  var MaxNum  = arguments[3]; //Maximum number of items
  var VarCopy = arguments[4]; //JS-variable of item that should be inserted.
  var SpanTtl = arguments[5]; //Entitle of span element, which should be created
  var ClsName = arguments[6]; //Class name of span element, which should be created
  var ThisBlockId = arguments[7]; //Id of block after where need to put new block

  var ItemsNum = document.getElementById(Counter).value;
  if(MaxNum != undefined && MaxNum <= ItemsNum){
    return -1;
  }
  if(typeof(VarRepl) != 'object'){
    eval("VarRepl = {'" + VarRepl + "':ItemsNum};");
  }
  if(VarCopy == undefined || !VarCopy){
    VarCopy = gBaseCopyItem;
  }
  if(SpanTtl == undefined || !SpanTtl){
    SpanTtl = 'InteractiveItem';
  }

  //find vacant id
  for(i=0;i<100;i++){
    if(!document.getElementById(SpanTtl + '[' + i + ']')) break;
  }

  VarCopy = VarCopy.replace(/< script>/gi,'<script>');
  VarCopy = VarCopy.replace(/< \/script>/gi,'</script>');

  //count of coordinates(qstn/answ)
  var j=0;
  for(var tVarReplElem in VarRepl){
    j++;
  }

  for(var tVarReplElem in VarRepl){
    if(j==1 && tVarReplElem=='gPNum'){//for personalities
      VarRepl[tVarReplElem]=i;
    }
    if(j==1 && tVarReplElem=='gPNum1'){//for questions
      VarRepl[tVarReplElem]=i;
    }
    if(j==2 && tVarReplElem=='gPNum2'){//for answers
      VarRepl[tVarReplElem]=i;
    }
    eval("VarCopy = VarCopy.replace(/@" + tVarReplElem + "@/gi, " + VarRepl[tVarReplElem] + ");");
  }

  var tNewObj = document.createElement('span');

  tNewObj.id = SpanTtl + '[' + i + ']';
  if(ClsName){
    tNewObj.className = ClsName;
  }
  tNewObj.innerHTML = VarCopy;
  if(ThisBlockId == undefined){
    document.getElementById(TabName).appendChild(tNewObj);
  }else{
    var ThisBlock = document.getElementById(ThisBlockId);
    document.getElementById(TabName).insertBefore(tNewObj, ThisBlock.nextSibling);
  }
  ItemsNum++;
  document.getElementById(Counter).value=ItemsNum;

  return ItemsNum;
}

//==============

function GridFormAll_AddItem2(){
  var VarRepl = arguments[0]; //String OR Object - what should be replaced in JS-variable
  var Counter = arguments[1]; //Id of counter - how many items in parent html-element
  var TabName = arguments[2]; //Id of html-element where should be placed (parent)
  var MaxNum  = arguments[3]; //Maximum number of items
  var VarCopy = arguments[4]; //JS-variable of item that should be inserted.
  var SpanTtl = arguments[5]; //Entitle of span element, which should be created
  var ClsName = arguments[6]; //Class name of span element, which should be created
  var ThisBlockId = arguments[8]; //Id of block after where need to put new block
  var RemName = arguments[7]; //String value for remove item string
  var BaseCopyN=arguments[9];

  var ItemsNum = document.getElementById(Counter).value;
  if(MaxNum != undefined && MaxNum <= ItemsNum){
    return -1;
  }
  if(typeof(VarRepl) != 'object'){
    eval("VarRepl = {'" + VarRepl + "':ItemsNum};");
  }
  if(VarCopy == undefined || !VarCopy){
    if(BaseCopyN==1){
      VarCopy = gBaseCopyItem2;
    }else{
      VarCopy = gBaseCopyItem;
    }
  }
  if(SpanTtl == undefined || !SpanTtl){
    SpanTtl = 'InteractiveItem';
  }

  //find vacant id
  for(i=0;i<100;i++){
    if(!document.getElementById(SpanTtl + '[' + i + ']')) break;
  }

  VarCopy = VarCopy.replace(/< script>/gi,'<script>');
  VarCopy = VarCopy.replace(/< \/script>/gi,'</script>');
  for(var tVarReplElem in VarRepl){
    if(tVarReplElem=='gPNum' || tVarReplElem=='gPNum2'){
      VarRepl[tVarReplElem]=i;
    }
    eval("VarCopy = VarCopy.replace(/@" + tVarReplElem + "@/gi, " + VarRepl[tVarReplElem] + ");");
  }
  var tNewObj = document.createElement('span');
  tNewObj.id = SpanTtl + '[' + i + ']';
  if(ClsName){
    tNewObj.className = ClsName;
  }
  var ABCA='<a href= "#" onclick="var tV = GridFormAll_RemItem2(\'' + Counter + '\', \'' + i + '\', \''+ BaseCopyN +'\', 1); return false;">' + RemName + '</a>';
  tNewObj.innerHTML = '<div class="clearfix"><label class="label"></label>'+ VarCopy + ABCA + '</div>';

  if(ThisBlockId == undefined || ThisBlockId==false){
    document.getElementById(TabName).appendChild(tNewObj);
  }else{
    var ThisBlock = document.getElementById(ThisBlockId);
    document.getElementById(TabName).insertBefore(tNewObj, ThisBlock.nextSibling);
  }
  ItemsNum++;
  document.getElementById(Counter).value=ItemsNum;
  ar = document.forms['profile'].getElementsByTagName("input");
  for (i=0;i<ar.length;i++){
    if(ar[i].type=='text' && ar[i].value==''){
      if(ar[i].name!='EmailMobile' && ar[i].name!='Hobby' && ar[i].name!='FName' && ar[i].name!='Nick' && ar[i].name!='LName' && ar[i].name!='Email' && ar[i].name!='CEmail' ){
        ar[i].value='http://';
      }
    }
  }
  return ItemsNum;
}

//==============

function GridFormAll_RemItem(){
  var Counter  = arguments[0];
  var MinNum   = arguments[1];
  var DelElem  = arguments[2];

  var ItemsNum = document.getElementById(Counter).value;

  if(MinNum != undefined && MinNum >= ItemsNum){
    return ItemsNum;
  }
  if(!DelElem){
    DelElem = 'InteractiveItem[' + (ItemsNum-1) + ']';
  }else{
    DelElem = DelElem + '[' + (ItemsNum-1) + ']';
  }

  if(document.getElementById(DelElem)){
    document.getElementById(DelElem).parentNode.removeChild(document.getElementById(DelElem));

    ItemsNum--;
    document.getElementById(Counter).value = ItemsNum;
  }

  if(document.getElementById('ButReset')){
    //Make reset button disabled if exists
    document.getElementById('ButReset').disabled = true;
  }

  return ItemsNum;
}

//==============

function GridFormAll_RemItem2(){
  var Counter  = arguments[0];
  var DelNum   = arguments[1];
  var DelElem  = arguments[2];
  var MinNum  = arguments[3];

  var ItemsNum = document.getElementById(Counter).value;
  if(MinNum != undefined && MinNum >= ItemsNum){
    return ItemsNum;
  }
  if(DelElem!=1){
    DelElem = 'InteractiveItem[' + (DelNum) + ']';
    DelName='InteractiveItem';
  }else{
    DelElem = 'InteractiveItem2[' + (DelNum) + ']';
    DelName='InteractiveItem2';
  }
  if(document.getElementById(DelElem)){
    //move title to next field
    var o = document.getElementById(DelElem);
    if(o.getElementsByTagName('label')[0]!=undefined){
      var Tit=o.getElementsByTagName('label')[0].innerHTML;
      if(Tit){
        var RegExp=/^(.+)(\[.+)$/;
        for(i=1;i<100;i++){
          o = o.nextSibling;
          if(o==null){
            break;
          }
          if(o.id && o.id!=undefined){
            arId = RegExp.exec(o.id);
            if(arId[1]==DelName){
              document.getElementById(DelName+arId[2]).getElementsByTagName('label')[0].innerHTML = Tit;
              break;
            }
          }
        }
      }
    }
    //delete
    document.getElementById(DelElem).parentNode.removeChild(document.getElementById(DelElem));

    ItemsNum--;
    document.getElementById(Counter).value = ItemsNum;
  }

  if(document.getElementById('ButReset')){
    //Make reset button disabled if exists
    document.getElementById('ButReset').disabled = true;
  }

  return ItemsNum;
}

//==============

function GridFormAll_RemItem_this(){
//author: igo
//delete 1 concrete question, answer or personality
  var Find    = arguments[0];//general block Id where we do delete
  var MinNum  = arguments[1];//minimal count of elements need to remain
  var DelElem = arguments[2];//element Id for deletion
//   var Find1   = arguments[3];//parent structure where element for delete exist
//   var Find2   = arguments[4];//type of field [Qstn/Answ]
//   var Find3   = arguments[5];//structure of element
  var Counter = arguments[3];//Id of counter - how many items in parent html-element
  var ftype   = arguments[4];//field type
  var fcoor   = arguments[5];//field coordinates

  if(document.getElementById('Voted' + fcoor)){
    //don't remove element wich in use by users votes
    //return false;
  }

  var ItemsNum = document.getElementById(Counter).value;
  if(MinNum != undefined && MinNum >= ItemsNum){
    return false;
  }

  if(document.getElementById(DelElem)){
    //set req field
    var Req=document.getElementById('Req'+ftype+fcoor).innerHTML;
    if(Req){
      var o = document.getElementById(DelElem);
      var DelName = 'Interactive'+ftype;
      var ReqName = 'Req'+ftype;
      for(i=1;i<100;i++){
        o = o.nextSibling;
        if(o==null){
          break;
        }
        if(o.id && o.id!=undefined){
          var RegExp=/^(.+[a-z,A-Z])(.+)$/;
          if((RegExp.exec(o.id)[1]==DelName) && !document.getElementById(ReqName+(RegExp.exec(o.id)[2])).innerHTML){
            document.getElementById(ReqName+(RegExp.exec(o.id)[2])).innerHTML = Req;
            if(ftype=='Item'){//personality
              document.getElementById(ReqName+'2'+(RegExp.exec(o.id)[2])).innerHTML = Req;
            }
            break;
          }
        }
      }
    }

    //delete element
    document.getElementById(DelElem).parentNode.removeChild(document.getElementById(DelElem));

    //counter down
    ItemsNum--;
    if(Counter != undefined){
      document.getElementById(Counter).value = ItemsNum;
    }
  }

  return true;
}

//==============

function QuizCharsFormFillSelectItem(){
  var Objt = arguments[0];
  var From = arguments[1];
  var Till = arguments[2];
  var Slct = arguments[3];

  if(document.getElementById(Objt) && document.getElementById(Objt).options){
    document.getElementById(Objt).options.length = 0;
    document.getElementById(Objt).options[0] = new Option('', '-1', false, false);

    if(From > -1 && From <= Till){
      for(var a=1, i=From; i <= Till; i++, a++){
        tSelected = (Slct > -1 && i == Slct) ? true : false;
        document.getElementById(Objt).options[a] = new Option(i, i, tSelected, tSelected);
      }
    }

    return true;
  }else{
    return false;
  }
}

//==============

function QuizCharsFormFillSelect(){
  var MNum = arguments[0]*1; //Max number - number of questions
  var Obj1 = arguments[1];   //[Start range] Disabled text-box
  var Obj2 = arguments[2];   //[End range] Select-box
  var Indx = arguments[3]*1;
  var SVal = arguments[4];

  var tVal, tSel;

  if(document.getElementById(Obj1 + '[' + Indx + ']') && document.getElementById(Obj2 + '[' + Indx + ']')){
    //Set Start Range value (disabled field)
    if(document.getElementById(Obj2 + '[' + (Indx-1) + ']')){//Previous [End range]
      if(document.getElementById(Obj2 + '[' + (Indx-1) + ']').value > -1){
        tVal = (document.getElementById(Obj2 + '[' + (Indx-1) + ']').value * 1) + 1;
        if(tVal > MNum){
          tVal = '';
        }
      }else{
        tVal = '';
      }
    }else{
      tVal = 0;
    }
    document.getElementById(Obj1 + '[' + Indx + ']').value = tVal;//Set for current [Start range]
    if(SVal != undefined){
      //Init select-box
      if(document.getElementById(Obj2 + '[' + (Indx-1) + ']') && document.getElementById(Obj2 + '[' + (Indx-1) + ']').value > -1){//Previous [End range]
        tVal = (document.getElementById(Obj2 + '[' + (Indx-1) + ']').value * 1) + 1;
      }else if(document.getElementById(Obj2 + '[' + (Indx-1) + ']')){//Previous [End range]
        tVal = '-1';
      }else{
        tVal = 0;
      }
      QuizCharsFormFillSelectItem(Obj2 + '[' + Indx + ']', tVal, MNum, SVal);
      tSel = (SVal * 1) + 1;
    }else{
      if(document.getElementById(Obj2 + '[' + Indx + ']').value > -1){
        tSel = (document.getElementById(Obj2 + '[' + Indx + ']').value * 1) + 1;
      }else{
        tSel = '-1';
      }
    }

    //Rearange next-rows both items
    for(var a=(Indx+1); a == a; a++){
      //Do till present row with elements
      if(document.getElementById(Obj1 + '[' + a + ']') && document.getElementById(Obj2 + '[' + a + ']')){
        if(document.getElementById(Obj2 + '[' + (a-1) + ']') && document.getElementById(Obj2 + '[' + (a-1) + ']').value > -1){//Previous [End range]
          tVal = (document.getElementById(Obj2 + '[' + (a-1) + ']').value * 1) + 1;
          if(tVal > MNum){
            tVal = '';
          }
        }else{
          tVal = '';
          tSel = '-1';
        }
        //Set for [Start range]
        document.getElementById(Obj1 + '[' + a + ']').value = tVal;
        //Set for [End range]
        QuizCharsFormFillSelectItem(Obj2 + '[' + a + ']', tSel, MNum, false);
      }else{
        break;
      }
    }

    return true;
  }else{
    return false;
  }
}

//==============

function CreateRealNums(){
//author: igo
//adding to each question block hidden element with real number on what place that block going at DOM
  var Find='InteractiveQstn';
  var Elems = document.getElementsByTagName('span');
  var RealNum = 0;

  for(i=0;i<Elems.length;i++){
    //find question blocks
    if(Elems && Elems[i].id.indexOf(Find) != -1){
      var Num = /\[(\d+)\]/.exec(Elems[i].id)[1];//current number of block
      var o = $('<input type="hidden" name="RealNum['+Num+']" value="'+RealNum+'">');
      $(o).appendTo(Elems[i]);
      RealNum++;
    }
  }

  return true;
}

//==============

function removeUrl(ftype, nid, tid, tid2){


  if(document.getElementById(tid)){
    var oid = document.getElementById(tid).value;
    if(oid=='_' && nid=='_'){
      return false;
    }
    if(oid==nid){
      nid='_';
    }

    if(document.getElementById('ublock' + nid) && document.getElementById('ublock' + oid)){
      document.getElementById('ublock' + nid).innerHTML = document.getElementById('ublock' + oid).innerHTML;//move block
      document.getElementById('ublock' + oid).innerHTML = '';//delete old block
    }
    if(document.getElementById(tid)){
      document.getElementById(tid).value = ftype;//save type of current block
    }
    if(document.getElementById(tid2)){
      document.getElementById(tid2).value = nid;//save number of current block
    }
  }
}

//==============

function SocialListLink(fid){
//author: igo
//get list of social questions
  if(document.getElementById('SocialListPlace'+fid) && document.getElementById('QuizId')){
    var o = document.getElementById('SocialListPlace'+fid);
    if(o.innerHTML == ''){
      var qid = document.getElementById('QuizId').value;
      if(document.getElementById('SocialListLoad'+fid)){
        document.getElementById('SocialListLoad'+fid).style.display = 'inline';
      }
      $.get(gRootUrl+'index.php?app=user&event=ajaxsoclist&fid='+fid+'&qid='+qid, SocialListData);
    }else{
      o.innerHTML = '';
    }
  }
  return false;
}

//==============

function SocialListData(data){
//author: igo
//output list of social questions
  var RegExp = /^(\d+)\|(.*)$/;
  var fid = RegExp.exec(data)[1];
  var list = RegExp.exec(data)[2];

  if(document.getElementById('SocialListLoad'+fid)){
    document.getElementById('SocialListLoad'+fid).style.display = 'none';
  }
  if(document.getElementById('SocialListPlace'+fid)){
    document.getElementById('SocialListPlace'+fid).innerHTML = list;
  }

  return true;
}

//==============

var g_limit = 0;
function SocialDonatorsListLink(){
//author: tomcat
//get list of SQ questions donators
  if(document.getElementById('display_area') && document.getElementById('QuizId')){
    var o = document.getElementById('display_area');
    var qid = document.getElementById('QuizId').value;

    $.get(gRootUrl+'index.php?app=visitor&event=ajaxsocdonatlist&qid='+qid+'&limit='+g_limit, SocialDonatorsListData);
  }

  return false;
}

//==============

function SocialDonatorsListData(data){
//author: tomcat
//output list of SQ questions donators
  var RegExp = /^(\d+)\|(.*)$/;
  g_limit  = RegExp.exec(data)[1];
  var list = RegExp.exec(data)[2];

  if(document.getElementById('display_area')){
    document.getElementById('display_area').innerHTML = list;
  }

  return true;
}

//==============

function TopMostPopularList(mode){
//author: tomcat
//get list of most popular quizes
  var top_list = document.getElementById('list1');
  if(top_list){
    if(mode == 1){
      top_list.style.backgroundPosition='0 0';
      top_list.style.backgroundImage='url(./thm/kusa/img/top/topimg_14.gif)';
    } else {
      top_list.style.backgroundPosition='0 79px';
      top_list.style.backgroundImage='url(./thm/kusa/img/top/topimg_15.gif)';
    }
    $.get(gRootUrl+'index.php?app=visitor&event=ajaxtopmostpoplist&mode='+mode, TopMostPopularListData);
  }

  return false;
}

//==============

function TopMostPopularListData(data){
//author: tomcat
//output list of most popular quizes
  if(document.getElementById('list1')){
    document.getElementById('list1').innerHTML = data;
  }

  return true;
}

//==============

function SocialDel(qstn){
//author: igo
//delete social question
  if(document.getElementById('SocItem_'+qstn)){
    var o = document.getElementById('SocItem_'+qstn);
    $.get(gRootUrl+'index.php?app=user&event=ajaxsocdel&qstn='+qstn, SocialDelAct);
  }
  return false;
}

//==============

function SocialDelAct(data){
//author: igo
//social question have been deleted or error
  var RegExp = /^(\d+)\|(.*)$/;
  var qstn = RegExp.exec(data)[1];
  var msg = RegExp.exec(data)[2];

  if(qstn==0){
    alert(msg);//error
  }else{
    if(document.getElementById('SocItem_'+qstn)){
      var DelElem='SocItem_'+qstn;
      document.getElementById(DelElem).parentNode.removeChild(document.getElementById(DelElem));//delete question from html
    }
    if(document.getElementById('sub')){
      document.getElementById('sub').style.display = 'none';//disabled submit button
    }
  }

  return true;
}

//==============

function ajaxRandomQuizInfo(data){
//author: igo
//change random quiz info
  document.getElementById('RandomQuizInfo').innerHTML = data;
  return true;
}
//==============

function ShowSelect(insert){
  insert=insert.replace('gAction', 'onChange="document.forms[\'statusform\'].submit();"');
  document.getElementById('stat').innerHTML=insert;
}

//==============

function PrsnPoints(ptstype,usrtype){
//author: tomcat
//add Positive or Negative point
  if(document.getElementById('Prsn'+ptstype) && document.getElementById('QuizId')){
    var qid = document.getElementById('QuizId').value;
    $.get(gRootUrl+'index.php?app='+usrtype+'&event=ajaxprsnpts&ptstype='+ptstype+'&qid='+qid, PrsnPointsShow);
  }
  return false;
}

//==============

function PrsnPointsShow(data){
//author: tomcat
//output points for personality
  var RegExp = /^(\d+)\|(.*)$/;
  var ptstype = RegExp.exec(data)[1];
  var fvalue = RegExp.exec(data)[2];

  if(document.getElementById('Prsn'+ptstype)){
    document.getElementById('Prsn'+ptstype).innerHTML = fvalue;
  }

  return true;
}

//==============

function PrsnShowExamples(){
  var prsnExmpl = document.getElementById('prsnEx');
  var prsnDescr = document.getElementById('prsnDescr');

  if(prsnExmpl.style.display == 'none'){
    prsnExmpl.style.display = 'block';
    prsnDescr.style.display = 'block';
  }
}

//==============

function init_ext(){
//author: igo
//some extra onload events
  //return some buttons visibility
  var Elems = new Array('get_code_button', 'get_res_code_button', 'get_cert_code_button', 'get_menu_code_button', 'get_toppage_code_button', 'get_prsnlist_txt', 'get_prsnlist_img');
  for(i=0;i<Elems.length;i++){
    if(document.getElementById(Elems[i])){
      document.getElementById(Elems[i]).style.visibility='visible';
    }
  }
}

//==============

function FandLNameOnChange(){
//author: igo
//profile_edit->FName/LName->onchange
  var field1=document.getElementById('FName').value;
  field1=field1.replace(/^\s+/, '');
  var field2=document.getElementById('LName').value;
  field2=field2.replace(/^\s+/, '');
  var checkbox=document.getElementById('FNamePublic');

  if(field1 || field2){
    checkbox.disabled=false;
  }else{
    checkbox.disabled=true;
    checkbox.checked=false;
  }
}

//==============

//faq dropdown
$(document).ready(function() {
  $("#faq div#exp_col").show();
  $("#faq dd").hide();
  $("#faq dt").hover(function() {
    $(this).addClass("hlite");
  }, function() {
    $(this).removeClass("hlite");
  });
  $("#faq dt").prepend('<img style="cursor: pointer;" src="./img/plus.gif" alt="expand"/>');
  $("#faq dt").click(function() {
    $(this).next("dd").slideToggle("fast");
    img = $(this).find("img");
    plus_minus(img);
  });
  $("#faq a#expand").click(function() {
    $("#faq dd").show();
    $("#faq dt img").attr("src","./img/minus.gif");
    $("#faq dt").addClass("expanded");
    return false;
  });
  $("#faq a#collapse").click(function() {
    $("#faq dd").hide();
    $("#faq dt img").attr("src","./img/plus.gif");
    $("#faq dt").removeClass("expanded");
    return false;
  });

  if (document.location.hash) {
    hash = document.location.hash;
    $("dt"+ hash).next().show();
    $("dt"+ hash).addClass("expanded");
  }
});

function plus_minus(e) {
  if (e.attr("src") == "./img/minus.gif") {
    e.attr("src","./img/plus.gif");
    e.parent().removeClass("expanded");
  } else {
    e.attr("src","./img/minus.gif");
    e.parent().addClass("expanded");
  }
}

//==============

function ajaxPrsnDelBefore(qid){
//author: igo
  var s_confirm=(qid=='all')?s_prsnlist_delall_confirm:s_prsnlist_del_confirm;
  if(confirm(s_confirm)){
    $.get(gRootUrl+'index.php?app=user&event=ajax_prsndel&qid='+qid, ajaxPrsnDelAfter);
  }
  return false;
}

//==============

function ajaxPrsnDelAfter(data){
//author: igo
  if(data==0){
    alert(s_prsnlist_del_err);
  }else if(data=='all'){
    document.getElementById('list_area').innerHTML='';
  }else{
    $('#prsnlist_item_'+data).fadeOut(1500, function(){$(this).remove();});
  }

  return true;
}

//==============
