var userTestPassed = 0;
var linksList;
var iconsList = new Array;
var testingForm = '';
var currentElement = '';
var isWorking = true;
var formFilled = false;
var oldUrl = '';;
var formSubmitted = false;

  function triggerError(err, holder, message, text) {
     if(err) {
        if(document.getElementById(holder)) {
            document.getElementById(holder).style.display = 'block';
        }
        if(document.getElementById(message) && text) {
            document.getElementById(message).innerHTML = text;
        }
/*
        if(document.getElementById('regSubmit')) {
            document.getElementById('regSubmit').disabled = true;
        }
*/
    }
    else {
        if(document.getElementById(holder)) {
            document.getElementById(holder).style.display = 'none';
        }   
/*
        if(document.getElementById('regSubmit')) {
            document.getElementById('regSubmit').disabled = false;
        }
*/
    }
  }
  
  function testsaveform(slim,onlylogin,showpass) {
      return testregform(slim,onlylogin,showpass, 1)
  }
  
  function testregform(slim, onlylogin, showpass, issave) {
//      if(!onlylogin) {
//          document.getElementById('regSubmit').disabled = true;
//      }
      error = false;
      if(slim == 1) {
          slim = true;
      }
      //////////////////////////////////////////////////////////////////////////
      // Проверяем логин пользователя
      //////////////////////////////////////////////////////////////////////////
      if((onlylogin != 2 && issave == 0) || onlylogin == undefined || issave == undefined) {
          if(document.getElementById('rfLogin') && (document.getElementById('rfLogin').value.length < 4)) {
              if(!slim || onlylogin) {
                  triggerError(1,'reLogin','rmLogin', errMsg[0]);
              }
              error = true;
          }
          else if(document.getElementById('rfLogin') && (document.getElementById('rfLogin').value.length > 20)) {
              if(!slim || onlylogin) {
                  triggerError(1,'reLogin','rmLogin', errMsg[1]);
              }
              error = true;
          }
          else if(document.getElementById('rfLogin') && !(/^[a-zA-Z0-9]+$/.test(document.getElementById('rfLogin').value))) {
              if(!slim || onlylogin) {
                  triggerError(1,'reLogin','rmLogin', errMsg[2]);
              }
              error = true;
          }
          else {
              if(document.getElementById('loginpassed').value > 0) {
                  triggerError(0,'reLogin','','');
              }
          }
          if(onlylogin == 1) {
//              document.getElementById('regSubmit').disabled = false;
              return false;
          }
      }
      //////////////////////////////////////////////////////////////////////////
      // Проверяем e-mail
      //////////////////////////////////////////////////////////////////////////
      if(!document.getElementById('rfEmail').value) {
          if(!slim) {
              triggerError(1,'reEmail','rmEmail', errMsg[3]);
          }
          error = true;
      }
      if(!(/^\w[a-z0-9\.\-]+@[a-z0-9\.\-]{2,}\.\w{2,5}$/.test(document.getElementById('rfEmail').value))) {
          if(!slim) {
              triggerError(1,'reEmail','rmEmail', errMsg[4]);
          }
          error = true;
      }
      else {
          triggerError(0,'reEmail','','');
      }
      if(onlylogin == 2) {
//          document.getElementById('regSubmit').disabled = false;
          return false;
      }
      //////////////////////////////////////////////////////////////////////////
      // Проверяем пароль
      //////////////////////////////////////////////////////////////////////////
      if(document.getElementById('rfPass').value || issave == 0)
      if(document.getElementById('rfPass') && (document.getElementById('rfPass').value.length < 4)) {
          if(!slim) {
              triggerError(1,'rePass','rmPass',  errMsg[5]);
          }
          error = true;
      }
      else if(document.getElementById('rfPass') && (document.getElementById('rfPass').value.length > 20)) {
          if(!slim) {
              triggerError(1,'rePass','rmPass', errMsg[6]);
          }
          error = true;
      }
      else if(document.getElementById('rfPass') && !(/^[a-zA-Z0-9]+$/.test(document.getElementById('rfPass').value))) {
          if(!slim) {
              triggerError(1,'rePass','rmPass', errMsg[7]);
          }
          error = true;
      }
      else {
          triggerError(0,'rePass','','');
          triggerError(0,'reRePass','','');
      }
      if(document.getElementById('rfRePass').value != document.getElementById('rfPass').value) {
          triggerError(0,'rePass','','');
          if(!slim || showpass || document.getElementById('rfRePass').value) {
              triggerError(1,'reRePass','rmRePass', errMsg[8]);
          }
          error = true;
      }
      if(document.getElementById('rfRePass').value == document.getElementById('rfPass').value) {
          triggerError(0,'reRePass','','');
      }


/*
      // Подводим под монастырь AJAX
      var waitplease = false;
      if(issave == 0) {
          if(document.getElementById('loginpassed').value < 1) {
              testLogin((issave > 0 ? 'formProfile' : 'formRegister'));
              waitplease = true;
          }
      }
      if(document.getElementById('emailpassed').value < 1) {
          testEmail((issave > 0 ? 'formProfile' : 'formRegister'));
          waitplease = true;
      }
      if(issave == 0) {
          if(document.getElementById('loginpassed').value < 1) {
              error = true;
          }
      }
      if(document.getElementById('timerpassed').value < 1) {
          error = true;
      }
//      if(waitplease && !error &) {
//          document.getElementById('regSubmit').disabled = true;
//      }
*/
      return !error;
  }
  
  function testLogin(form_id, doPass) {
      return false;
//      document.getElementById('regSubmit').disabled = true;
      testingForm = form_id;
      if(document.getElementById('rfLogin') && document.getElementById('rfLogin').value) {
          var login = document.getElementById('rfLogin').value;
          var nocache=Math.round(Math.random()*1000000);
      		var myAjax = new Ajax('/testlogin.php?login='+login+'&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
      		function(txt, xml) {
              if(txt > 0) {
                  document.getElementById('loginpassed').value=-1;
                  triggerError(1,'reLogin','rmLogin', errMsg[16]);
              }
              else {
                  document.getElementById('loginpassed').value=1;
                  if(testregform(1) == -1) {
                      if(testingForm && document.getElementById(testingForm)) {
                          formSubmitted = true;
                          document.getElementById(testingForm).submit();
                      }                  
                  }
                      document.getElementById('regSubmit').disabled = false;
              }
      		}
      		}).request();
      }
  }

  function testEmail(form_id) {
      return false;
      testingForm = form_id;
      if(document.getElementById('rfEmail') && document.getElementById('rfEmail').value) {
          email = document.getElementById('rfEmail').value;
          var nocache=Math.round(Math.random()*1000000);
      		var myAjax = new Ajax('/testlogin.php?email='+email+'&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
      		function(txt, xml) {
              if(txt > 0) {
                  document.getElementById('emailpassed').value=-1;
                  triggerError(1,'reEmail','rmEmail', errMsg[17]);
              }
              else {
                  document.getElementById('emailpassed').value=1;
//                  if(doPass == 1) {
//                  if(testregform(1,2) == false) {
//                  if(testregform() == false) {
                      if(testingForm && document.getElementById(testingForm)) {
                          formSubmitted = true;
                          document.getElementById(testingForm).submit();
/*
                      if(document.getElementById(testingForm).onsubmit())  {

                            document.getElementById(testingForm).submit();
*/
                      }
//                      document.getElementById('regSubmit').disabled = false;
//                  }
              }
      		}
      		}).request();
      }
  }

  function testRestore(form_id) {
      testingForm = form_id;
      if(document.getElementById('rfEmail') && document.getElementById('rfEmail').value) {
          if(!(/^\w[a-z0-9\.\-]+@[a-z0-9\.\-]{2,}\.\w{2,5}$/.test(document.getElementById('rfEmail').value))) {
              triggerError(1,'reEmail','rmEmail', errMsg[18]);
              triggerError(1,'reHolder','rmHolder','');
              return false;
          }
          email = document.getElementById('rfEmail').value;
          var nocache=Math.round(Math.random()*1000000);
      		var myAjax = new Ajax('/testlogin.php?restore='+email+'&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
      		function(txt, xml) {
              if(txt == 0) {
                  triggerError(1,'reEmail','rmEmail', errMsg[19]);
                  triggerError(1,'reHolder','rmHolder','');                  
              }
              else {
                  triggerError(0,'reEmail','','');
                  triggerError(0,'reHolder','','');                  
                  if((testingForm) && document.getElementById(testingForm)) {
                      document.getElementById(testingForm).submit();
                  }
              }
      		}
      		}).request();
      }
      if(document.getElementById('emailpassed').value > 0) {
          return true;
      }
      else {
          return false;
      }
  }

  function testTimer() {
    var nocache=Math.round(Math.random()*1000000);
  		var myAjax = new Ajax('/testlogin.php?regip=1&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
      		function(txt, xml) {
              if(txt > 0) {
                  document.getElementById('timerpassed').value=-1;
                  triggerError(1,'reTimer','rmTimer', errMsg[20]);
                  setTimeout('testTimer();',txt*1000);
              }
              else {
                  document.getElementById('timerpassed').value=1;
                  triggerError(0,'reTimer','','');
              }
      		}
      		}).request();
  }

  function testSaveTimer() {
    var nocache=Math.round(Math.random()*1000000);
  		var myAjax = new Ajax('/testlogin.php?editip=1&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
      		function(txt, xml) {
              if(txt > 0) {
                  document.getElementById('timerpassed').value=-1;
                  triggerError(1,'reTimer','rmTimer', errMsg[21]);
                  setTimeout('testTimer();',txt*1000);
              }
              else {
                  document.getElementById('timerpassed').value=1;
                  triggerError(0,'reTimer','','');
              }
      		}
      		}).request();
  }
  
  function testUser(query, silent, testpass) {
      var i = 0;
 	    var err = 0;
/*
      if(document.getElementById('u_login').value.length < 1 && document.getElementById('u_pass').value.length < 1) {
          return false;
      }
*/
      testingForm = 'loginForm';
      if(document.getElementById('u_login') && document.getElementById('u_login').value.length < 1) {
          triggerError(1,'reLogin','rmLogin', errMsg[22]);
          err = 1;
      }
      else if(document.getElementById('u_login') && document.getElementById('u_login').value.length < 4) {
          triggerError(1,'reLogin','rmLogin', errMsg[28]);
          err = 1;
      }
      else {
          triggerError(0,'reLogin','','');
      }
      if(err < 1) {
          if(document.getElementById('u_pass').value.length < 1) {
              triggerError(1,'rePass','rmPass', errMsg[23]);
              err = 1;
          }
          else if(document.getElementById('u_pass').value.length < 4) {
              triggerError(1,'rePass','rmPass', errMsg[27]);
              err = 1;
          }
          else {
              triggerError(0,'rePass','','');
          }
      }
  		if(err < 1) {
          if(document.getElementById('login_movie')) {
              document.getElementById('login_movie').style.display="block";
          }
          var nocache=Math.round(Math.random()*1000000);
          var myAjax = new Ajax('/ajax.php?nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'post', postBody: query, onComplete: 
          		function(txt, xml) {
                  if(document.getElementById('login_movie')) {
                      document.getElementById('login_movie').style.display="none";
                  }
                  if(txt == 1 && testingForm == 'loginForm') {
                      document.getElementById('loginForm').submit();
                  }
                  if(txt == -1) {
                      triggerError(1,'reLogin','rmLogin', errMsg[24]);
                      return false;
                  }
                  else if(txt == -6) {
                      triggerError(1,'reLogin','rmLogin', errMsg[28]);
                      return false;
                  }
                  else if(txt == -7) {
                      triggerError(1,'reLogin','rmLogin', errMsg[22]);
                      return false;
                  }
                  else {
                      triggerError(0,'reLogin','','');
                  }
                  if(txt == -2) {
                      triggerError(1,'rePass','rmPass', errMsg[25]);
                      return false;
                  }
                  else if(txt == -3) {
                      triggerError(1,'rePass','rmPass', errMsg[26]);
                      return false;
                  }
                  else if(txt == -4) {
                      triggerError(1,'rePass','rmPass', errMsg[23]);
                      return false;
                  }
                  else if(txt == -5) {
                      triggerError(1,'rePass','rmPass', errMsg[27]);
                      return false;
                  }
                  else {
                      triggerError(0,'rePass','','');
                  }
          		}
          		}).request();
      }
  }
/*
  function testUser(query, silent, testpass) {
      var i = 0;
 	    var err = 0;
      if(document.getElementById('u_login').value.length < 1 && document.getElementById('u_pass').value.length < 1) {
          return false;
      }
      if(!silent) {
          testingForm = 'loginForm';
      }
      if(testpass) {
          formFilled = true;
      }
      if(document.getElementById('u_login') && document.getElementById('u_login').value.length < 1) {
          triggerError(1,'reLogin','rmLogin', errMsg[22]);
          err = 2;
      }
      else if(document.getElementById('u_login') && document.getElementById('u_login').value.length < 4) {
          triggerError(1,'reLogin','rmLogin', errMsg[28]);
          err = 2;
      }
      else {
//          triggerError(0,'reLogin','','');
      }
      if(formFilled && document.getElementById('u_pass')) {
          if(document.getElementById('u_pass').value.length < 1) {
              triggerError(1,'rePass','rmPass', errMsg[23]);
              err = 1;
          }
          else if(document.getElementById('u_pass').value.length < 4) {
              triggerError(1,'rePass','rmPass', errMsg[27]);
              err = 1;
          }
          else {
              triggerError(0,'rePass','','');
          }
      }
  		if(err < 2) {
          if(document.getElementById('login_movie')) {
              document.getElementById('login_movie').style.display="block";
          }
          var nocache=Math.round(Math.random()*1000000);
          var myAjax = new Ajax('/ajax.php?nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'post', postBody: query, onComplete: 
          		function(txt, xml) {
                  if(document.getElementById('login_movie')) {
                      document.getElementById('login_movie').style.display="none";
                  }
                  if(txt == 1 && testingForm == 'loginForm') {
                      document.getElementById('loginForm').submit();
                  }
                  if(txt == -1) {
                      triggerError(1,'reLogin','rmLogin', errMsg[24]);
                      return false;
                  }
                  else if(txt == -6) {
                      triggerError(1,'reLogin','rmLogin', errMsg[28]);
                      return false;
                  }
                  else if(txt == -7) {
                      triggerError(1,'reLogin','rmLogin', errMsg[22]);
                      return false;
                  }
                  else {
                      triggerError(0,'reLogin','','');
                  }
                  if(txt == -2) {
                      triggerError(1,'rePass','rmPass', errMsg[25]);
                      return false;
                  }
                  else if(txt == -3) {
                      triggerError(1,'rePass','rmPass', errMsg[26]);
                      return false;
                  }
                  else if(txt == -4) {
                      triggerError(1,'rePass','rmPass', errMsg[23]);
                      return false;
                  }
                  else if(txt == -5) {
                      triggerError(1,'rePass','rmPass', errMsg[27]);
                      return false;
                  }
                  else {
                      triggerError(0,'rePass','','');
                  }
          		}
          		}).request();
      }
/*
      if(userTestPassed < 1) {
          err = 1;
      }
      if(err) {
          return false;
      }
      else {
          return true;
      }
* /
  }
*/
  
  function goSearch(newWindow) {
      var url = '';
      var who = document.getElementById('searcher').value;
      if(!who) {
          who = 1;
      }
/*
      if(document.getElementById('searcher_path_'+who)) {
          if(document.getElementById('query').value) {
              url = document.getElementById('searcher_path_'+who).value;
              url += document.getElementById('query').value;
          }
          else {
              url += document.getElementById('searcher_url_'+who).value;
           }
          if(newWindow) {
              window.open(url, 'searcher');
          }
          else {
              document.location = url;
          }
          return false;
      }
      else {
          return true;
      }
*/
          url = '/go.php?query='+document.getElementById('query').value+'&searcher='+who;
          if(newWindow) {
              var t = new Date();
              window.open(url, 'searcher_'+t.getTime());
          }
          else {
              document.location = url;
          }
          return false;
  }
  
  
  function edit_hideall() {
      els = document.getElementsByTagName('td');
      for(i=0; i<els.length; i++) {
          if(els[i].id && (els[i].id.indexOf('eform_') != -1 || els[i].id.indexOf('dform_') != -1)) {
              els[i].style.display = 'none';
          }
          if(els[i].id && (els[i].id.indexOf('dform_') != -1 || els[i].id.indexOf('dform_') != -1)) {
              els[i].style.display = 'none';
          }
      }
      els = document.getElementsByTagName('div');
      for(i=0; i<els.length; i++) {
          if(els[i].id && (els[i].id.indexOf('efake_') != -1 || els[i].id.indexOf('dform_') != -1)) {
              els[i].style.display = 'none';
          }
          if(els[i].id && (els[i].id.indexOf('dfake_') != -1 || els[i].id.indexOf('dform_') != -1)) {
              els[i].style.display = 'none';
          }
      }

      if(document.getElementById('aform_1')) {
          document.getElementById('aform_1').style.display = 'none';
      }
      if(document.getElementById('aform_2')) {
          document.getElementById('aform_2').style.display = 'none';
      }
      if(document.getElementById('aform_3')) {
          document.getElementById('aform_3').style.display = 'none';
      }
      if(linksList) {
          for(i=0; i<linksList.length; i++) {
              lnk = linksList[i];
              if((lnk != undefined) && (lnk.id)) {
                  if(document.getElementById('bd_'+lnk.id)) {
                      document.getElementById('bd_'+lnk.id).src="/images/ico06_de.gif";
                  }
                  if(document.getElementById('be_'+lnk.id)) {
                      document.getElementById('be_'+lnk.id).src="/images/ico05_ed.gif";
                  }
              }
          }
      }
      if(document.getElementById('addlink_1_0')) {
          document.getElementById('addlink_1_0').style.display = 'none';
      }
      if(document.getElementById('addlink_1_1')) {
          document.getElementById('addlink_1_1').style.display = 'block';
      }
      if(document.getElementById('addlink_2_0')) {
          document.getElementById('addlink_2_0').style.display = 'none';
      }
      if(document.getElementById('addlink_2_1')) {
          document.getElementById('addlink_2_1').style.display = 'block';
      }
      if(document.getElementById('addlink_3_0')) {
          document.getElementById('addlink_3_0').style.display = 'none';
      }
      if(document.getElementById('addlink_3_1')) {
          document.getElementById('addlink_3_1').style.display = 'block';
      }
  }
  
  
  function edit_show_edit(who) {
      if(isWorking) {
          return false;
      }
      isWorking = true;
      if(document.getElementById('eform_'+who).style.display == 'none') {
          edit_hideall();
          document.getElementById('eform_'+who).style.display = '';
          document.getElementById('efake_'+who).style.display = 'block';
          document.getElementById('linkPreset_'+who).style.display = 'inline';
          document.getElementById('be_'+who).src="/images/ico05_ed2.gif";
          
      }
      else {
          edit_hideall();
          document.getElementById('eform_'+who).style.display = 'none';
          document.getElementById('efake_'+who).style.display = 'none';
          document.getElementById('linkPreset_'+who).style.display = 'none';
          document.getElementById('be_'+who).src="/images/ico05_ed_o.gif";
      }
      edit_findPresets(who, document.getElementById('linkUrl_'+who).value);
      isWorking = false;
  }

  function edit_show_del(who) {
      if(isWorking) {
          return false;
      }
      isWorking = true;
      if(document.getElementById('dform_'+who).style.display == 'none') {
          edit_hideall();
          document.getElementById('dform_'+who).style.display = '';
          document.getElementById('dfake_'+who).style.display = 'block';
          document.getElementById('bd_'+who).src="/images/ico06_de2.gif";
      }
      else {
          edit_hideall();
          document.getElementById('dform_'+who).style.display = 'none';
          document.getElementById('dfake_'+who).style.display = 'none';
          document.getElementById('bd_'+who).src="/images/ico06_de_o.gif";
      }
      isWorking = false;
  }

  function edit_show_add(who) {
      if(isWorking) {
          return false;
      }
      isWorking = true;
      if(document.getElementById('eform_new_'+who)) {
          if(document.getElementById('eform_new_'+who).style.display == 'none') {
              document.getElementById('linkName_new_'+who).value = '';
              document.getElementById('linkName_new_'+who).value = '';
              document.getElementById('linkUrl_new_'+who).value = '';
              edit_hideall();
              document.getElementById('eform_new_'+who).style.display = '';
              if(document.getElementById('addlink_'+who+'_0')) {
                  document.getElementById('addlink_'+who+'_0').style.display = 'block';
              }
              if(document.getElementById('addlink_'+who+'_1')) {
                  document.getElementById('addlink_'+who+'_1').style.display = 'none';
              }
          }
          else {
              edit_hideall();
              document.getElementById('eform_new_'+who).style.display = 'none';
          }
          edit_findPresets('new_'+who, 'itsareallynolink');
      }
      isWorking = false;
  }
  
  function edit_findPresets(who, url) {
      if(!oldUrl || oldUrl == url || oldUrl == 'itsreallynolink') {
          oldUrl = url;
          return false;
      }
      oldUrl = url;
      var nocache=Math.round(Math.random()*1000000);
      currentElement = who;
/*
      document.getElementById('but_save_'+who).disabled = true;
/*      
/*
      document.getElementById('but_save_'+who).onclick = function() {
          setTimeout("document.getElementById('but_save_'+currentElement).onclick = ''; document.getElementById('but_save_'+currentElement).click()", 1000);
          return false;
      }
*/
//      document.getElementById('linkPreset_'+who).disabled = true;
      var myAjax = new Ajax('/ajax.php?findPresets=1&url='+url+'&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
          function(txt,xml) {
              who = currentElement;
              if(!who) {
                  return false;
              }
              sel = document.getElementById('linkPreset_'+who);
              if(sel) {
                  sel.length = 0;
                  if(eval(txt)) {
                      var current = 0;
                      var selected = 0;
                      if(document.getElementById('linkPreset_'+who)) {
//                          document.getElementById('linkPreset_'+who).disabled = true;
                          document.getElementById('linkPreset_'+who).innerHTML = '';
                          document.getElementById('but_save_'+who).disabled = true;
                          for(i=0; i<presetsList.length; i++) {
                              selected = 0;
                              if(document.getElementById('linkPresetId_'+who) && (presetsList[i]['id'] == document.getElementById('linkPresetId_'+who).value)) {
                                  selected = 1;
                              }
                              if(!(who == who-0) && who.indexOf('new') > -1 && i==0) {
                                  selected = 1;
                              }
                              sel.length = sel.length + 1;
                              sel.options[sel.length-1].text  = presetsList[i]['name'];
                              sel.options[sel.length-1].value = presetsList[i]['id'];
                              sel.options[sel.length-1].selected = selected;
                              iconsList[presetsList[i]['id']] = presetsList[i]['favicon'];
                              if(selected) {
                                  current = presetsList[i]['id'];
                              }
                              if(presetsList[i]['id'] == 2) {
                                isEmail = sel.length-1;
                              }
                              if(presetsList[i]['id'] == 1) {
                                isBlank = sel.length-1;
                              }
                          }
                      }
                      if(current) {
                          edit_chIcon(who, current);
                      }
                      else if(url.indexOf('@') > -1) {
                          edit_chIcon(who, 2);
                          sel.options[isEmail].selected = true;
                      }
                      else {
                          edit_chIcon(who, 1);
                          sel.options[isBlank].selected = true;
                      }
                      document.getElementById('but_save_'+who).disabled = false;
                      document.getElementById('linkPreset_'+who).disabled = false;
                  }
              }
          }
      		}).request();
  }
  
  function edit_chIcon(who, i) {
      if(document.getElementById('linkIco_'+who)) {
          document.getElementById('linkIco_'+who).src = '/images/icons/'+iconsList[i];
      }
  }
  
  function edit_save(who) {
      var err = false;
      if(!document.getElementById('linkName_'+who)) return false;
      if(!document.getElementById('linkUrl_'+who)) return false;
      if(!document.getElementById('linkPreset_'+who)) return false;
      if(document.getElementById('linkName_'+who).value.length < 1) {
          document.getElementById('errName_'+who).style.display="";
          err = true;
      }
      if(document.getElementById('linkUrl_'+who).value.length < 1) {
          document.getElementById('errUrl_'+who).style.display="";
          err = true;
      }
      if(!err) {
          var name   = document.getElementById('linkName_'+who).value;
          var url    = document.getElementById('linkUrl_'+who).value;
          var preset = document.getElementById('linkPreset_'+who).value;
          isWorking = true;
          document.getElementById('linkHolder2').innerHTML = reBugger(document.getElementById('tblWaitEx').innerHTML);
          document.getElementById('linkHolder1').innerHTML = '';
          document.getElementById('linkHolder3').innerHTML = '';
          var nocache=Math.round(Math.random()*1000000);
      		var myAjax = new Ajax('/edit/?&what=save&who='+who+'&name='+name+'&url='+url+'&preset='+preset+'&nocache='+nocache+'&nl='+name.length, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
              function(txt,xml) {
                  linkShow();
              }
          		}).request();
      }
      if(document.getElementById('mess_save')) {
          document.getElementById('mess_save').style.display = 'block';
      }
  }
  
  function edit_add(who) {
      var err = false;
      if(!document.getElementById('linkName_'+who)) return false;
      if(!document.getElementById('linkUrl_'+who)) return false;
      if(!document.getElementById('linkPreset_'+who)) return false;
      if(document.getElementById('linkName_'+who).value.length < 1) {
          document.getElementById('errName_'+who).style.display="";
          err = true;
      }
      if(document.getElementById('linkUrl_'+who).value.length < 1) {
          document.getElementById('errUrl_'+who).style.display="";
          err = true;
      }
      if(!err) {
          var name   = document.getElementById('linkName_'+who).value;
          var url    = document.getElementById('linkUrl_'+who).value;
          var preset = document.getElementById('linkPreset_'+who).value;
          isWorking = true;
          document.getElementById('linkHolder2').innerHTML = reBugger(document.getElementById('tblWaitEx').innerHTML);
          document.getElementById('linkHolder1').innerHTML = '';
          document.getElementById('linkHolder3').innerHTML = '';
          var nocache=Math.round(Math.random()*1000000);
      		var myAjax = new Ajax('/edit/?&what=add&who='+who+'&name='+name+'&url='+url+'&preset='+preset+'&nocache='+nocache+'&nl='+name.length, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
              function(txt,xml) {
                  linkShow();
              }
          		}).request();
      }
      if(document.getElementById('mess_save')) {
          document.getElementById('mess_save').style.display = 'block';
      }
  }
   function add_sep(who) {
      var err = false;
      if(!err) {
          var name   = 'seporator';
          var url    = '';
          var preset = 1;
          isWorking = true;
          document.getElementById('linkHolder2').innerHTML = reBugger(document.getElementById('tblWaitEx').innerHTML);
          document.getElementById('linkHolder1').innerHTML = '';
          document.getElementById('linkHolder3').innerHTML = '';
          var nocache=Math.round(Math.random()*1000000);
      		var myAjax = new Ajax('/edit/?&what=add&who='+who+'&name='+name+'&url='+url+'&preset='+preset+'&nocache='+nocache+'&nl='+name.length, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
              function(txt,xml) {
                  linkShow();
              }
          		}).request();
      }
      if(document.getElementById('mess_save')) {
          document.getElementById('mess_save').style.display = 'block';
      }
  }
   
  function edit_delete(who) {
      isWorking = true;
      document.getElementById('linkHolder2').innerHTML = reBugger(document.getElementById('tblWaitEx').innerHTML);
      document.getElementById('linkHolder1').innerHTML = '';
      document.getElementById('linkHolder3').innerHTML = '';
      var nocache=Math.round(Math.random()*1000000);
   		var myAjax = new Ajax('/edit/?&what=delete&who='+who+'&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
              function(txt,xml) {
                  linkShow();
              }
          		}).request();      
      if(document.getElementById('mess_save')) {
          document.getElementById('mess_save').style.display = 'block';
      }
  }
  
  // Пипец!
  function linkMove(who, what) {
    isWorking = true;
    document.getElementById('linkHolder2').innerHTML = reBugger(document.getElementById('tblWaitEx').innerHTML);
    document.getElementById('linkHolder1').innerHTML = '';
    document.getElementById('linkHolder3').innerHTML = '';
    var nocache=Math.round(Math.random()*1000000);
  		var myAjax = new Ajax('/edit/?who='+who+'&what='+what+'&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
          function(txt,xml) {
              linkShow();
          }
      		}).request();
      if(document.getElementById('mess_save')) {
          document.getElementById('mess_save').style.display = 'block';
      }
  }
  
  
  function linkShow() {
    isWorking = true;
    document.getElementById('linkHolder2').innerHTML = reBugger(document.getElementById('tblWaitEx').innerHTML);
    document.getElementById('linkHolder1').innerHTML = '';
    document.getElementById('linkHolder3').innerHTML = '';
    var nocache=Math.round(Math.random()*1000000);
  		var myAjax = new Ajax('/ajax.php?links=1&nocache='+nocache, {encoding: 'UTF-8', evalScripts: false, method: 'get', onComplete: 
          function(txt,xml) {
              if(eval(txt) != undefined) {
                  linkReposite();
              }
          }
      		}).request();
  }

  function reBugger(str) {
      while(str.indexOf('&gt;') > -1) {
          str = str.replace('&gt;', '>');
      }
      while(str.indexOf('&lt;') > -1) {
          str = str.replace('&lt;', '<');
      }
      return str;
  }

  // Расстановка ссылок
  function linkReposite() {
      var i;
      var cnts = new Array(4);
      // Если нет массива ссылок - в аут
      if(!linksList || linksList.length < 1) {
          return false;
      }
      isWorking = true;

      // Три столбца
      for(i=1; i<=3; i++) {
          // Если существует текущий столбец
          if(document.getElementById('linkHolder'+i)) {
              // Счетчик
              cnt = 0;
              // ID первого элемента в столбце
              var fitem = -1;
              // ID последнего элемента в столбце
              var litem = -1;
              // Создаем строку
              str = new String(reBugger(document.getElementById('tblHeadEx').innerHTML));
              if(linksList.length)
              // Проходимся по массиву ссылок
              var seporator = false;
              for(j=0; j<linksList.length; j++) {
                  lnk = linksList[j];
                  // ...и выбираем те, что относятся к текущему столбцу
                  if((lnk != undefined) && (lnk.col  == i)) {
                      cnt++;
                     
                      if (lnk.name == 'seporator')
                      {
                       seporator = true;
                       cell = new String(document.getElementById('tblCellExSep').innerHTML);
                       cell = reBugger(cell);
                       // Заменяем все маски на нужные элементы
                       while(cell.indexOf('::col::') > -1) {
                           cell = cell.replace('::col::', lnk.col);
                       }
                       while(cell.indexOf('::name::') > -1) {
                           cell = cell.replace('::name::', 'разделитель');
                       }
                       url = lnk.url;
                      }
                      else
                      {
                      
                       // Дергаем паттерн элемента
                       cell = new String(document.getElementById('tblCellEx').innerHTML);
                       cell = reBugger(cell);
                       // Заменяем все маски на нужные элементы
                       while(cell.indexOf('::col::') > -1) {
                           cell = cell.replace('::col::', lnk.col);
                       }
                       while(cell.indexOf('::name::') > -1) {
                           cell = cell.replace('::name::', lnk.name);
                       }
                       url = lnk.url;
                      } 
/*
                      if(url.indexOf('://')) {
                          url = url.substring(url.indexOf('://')+3, url.length);
                      }
*/
                      while(cell.indexOf('::url::') > -1) {
                          cell = cell.replace('::url::', url);
                      }
                      while(cell.indexOf('::favicon::') > -1) {
                          cell = cell.replace('::favicon::', lnk.favicon);
                      }
                      while(cell.indexOf('::id::') > -1) {
                          cell = cell.replace('::id::', lnk.id);
                      }
                      while(cell.indexOf('::preset::') > -1) {
                          cell = cell.replace('::preset::', lnk.preset);
                      }
                      while(cell.indexOf('::ord::') > -1) {
                          cell = cell.replace('::ord::', lnk.ord);
                      }
                      while(cell.indexOf('::errMessName::') > -1) {
                          cell = cell.replace('::errMessName::', errMsg[40]);
                      }
                      while(cell.indexOf('::errMessUrl::') > -1) {
                          cell = cell.replace('::errMessUrl::', errMsg[41]);
                      }
                      
                      
                      
                      str += cell;
                      // Ставим ID первого элемента
                      if(fitem < 0) {
                          fitem = lnk.id;
                      }
                      // ... и последнего элемента
                      litem = lnk.id;
                  }
              }
              var maxlinks = (seporator) ? 11 : 10;
              // Если меньше 10 элементов, то ссылка на добавление
              if(cnt < maxlinks) {
                  aform = reBugger(document.getElementById('tblBotEx').innerHTML);
                  while(aform.indexOf('::column::') > -1) {
                      aform = aform.replace('::column::', i);
                  }
                  while(aform.indexOf('::errMessName::') > -1) {
                      aform = aform.replace('::errMessName::', errMsg[40]);
                  }
                  while(aform.indexOf('::errMessUrl::') > -1) {
                      aform = aform.replace('::errMessUrl::', errMsg[41]);
                  }
                  str += aform;
              }
              if (!seporator)
              {
               aform = reBugger(document.getElementById('tblBotExSep').innerHTML);
                while(aform.indexOf('::column::') > -1) {
                      aform = aform.replace('::column::', i);
                  }
                str += aform;  
              }
              cnts[i] = cnt;
              // Вставляем сгененрированную строку в столбец - женим.
              document.getElementById('linkHolder'+i).innerHTML = str;
              // Если определен первый элемент столбца, меняем картинку и убираем ссылку
              if(fitem > -1) {
                  if(document.getElementById('mu_'+fitem)) {
                      document.getElementById('mu_'+fitem).src = '/images/ico01_arup_n.gif';
                  }
                  if(document.getElementById('lu_'+fitem)) {
                      document.getElementById('lu_'+fitem).href = '#';
                      document.getElementById('lu_'+fitem).onclick = function() {return false;};
                      document.getElementById('lu_'+fitem).style.cursor='default';
                  }

              }
              // Если определен последний элемент столбца, меняем картинку и убираем ссылку
              if(litem > -1) {
                  if(document.getElementById('md_'+litem)) {
                      document.getElementById('md_'+litem).src = '/images/ico01_arup_n.gif';
                  }
                  if(document.getElementById('ld_'+litem)) {
                      document.getElementById('ld_'+litem).href = '#';
                      document.getElementById('ld_'+litem).onclick = function() {return false;};
                      document.getElementById('ld_'+litem).style.cursor='default';
                  }
              }
              
               // Если первый столбец, убираем ссылку "Левее"
               if(i == 1) {
                  for(j=0; j<linksList.length; j++) {
                      lnk = linksList[j];
                      if((lnk != undefined) && (lnk.col  == i)) {
                          if(document.getElementById('ml_'+lnk.id)) {
                              document.getElementById('ml_'+lnk.id).src = '/images/ico01_arup_n.gif';
                          }
                          if(document.getElementById('ll_'+lnk.id)) {
                              document.getElementById('ll_'+lnk.id).href = '#';
                              document.getElementById('ll_'+lnk.id).onclick = function() {return false;};
                              document.getElementById('ll_'+lnk.id).style.cursor='default';
                          }
                      }
                  }
               }
               // Если последний столбец, убираем ссылку "Правее"
               if(i == 3) {
                  for(j=0; j<linksList.length; j++) {
                      lnk = linksList[j];
                      if((lnk != undefined) && (lnk.col  == i)) {
                          if(document.getElementById('mr_'+lnk.id)) {
                              document.getElementById('mr_'+lnk.id).src = '/images/ico01_arup_n.gif';
                          }
                          if(document.getElementById('lr_'+lnk.id)) {
                              document.getElementById('lr_'+lnk.id).href = '#';
                              document.getElementById('lr_'+lnk.id).onclick = function() {return false;};
                              document.getElementById('lr_'+lnk.id).style.cursor='default';
                          }
                      }
                  }
               }
              
//              cnts
          }
      }
      
      //Фикс для 10 ссылок + 1 разделителя
      var seporatorInColumns = new Array();
      
      for(j=0; j<linksList.length; j++) 
      {
       lnk = linksList[j];
       if (lnk.name == 'seporator')
       {
        seporatorInColumns[lnk.col] = true;
       }
      }
      
      // Смотрим на соседние столбцы - влево
      for(j=0; j<linksList.length; j++) {
      
          lnk = linksList[j];
          //alert(lnk.name);
          if(lnk == undefined) continue;
          if(lnk.col == 0) continue;
          var maxPoss = (seporatorInColumns[lnk.col-1]) ? 10 : 9;
          
          if((lnk.col-1 > 0) && cnts[lnk.col-1] > maxPoss) {
              if(document.getElementById('ml_'+lnk.id)) {
                  document.getElementById('ml_'+lnk.id).src = '/images/ico01_arup_n.gif';
              }
              if(document.getElementById('ll_'+lnk.id)) {
                   document.getElementById('ll_'+lnk.id).href = '#';
                   document.getElementById('ll_'+lnk.id).onclick = function() {return false;};
                   document.getElementById('ll_'+lnk.id).style.cursor='default';
              }
          }
          
          var maxPoss = (seporatorInColumns[lnk.col+1]) ? 10 : 9;
          if((lnk != undefined) && (lnk.col+1 < 4) && cnts[lnk.col+1] > maxPoss) {
              if(document.getElementById('mr_'+lnk.id)) {
                  document.getElementById('mr_'+lnk.id).src = '/images/ico01_arup_n.gif';
              }
              if(document.getElementById('lr_'+lnk.id)) {
                   document.getElementById('lr_'+lnk.id).href = '#';
                   document.getElementById('lr_'+lnk.id).onclick = function() {return false;};
                   document.getElementById('lr_'+lnk.id).style.cursor='default';
              }
          }
      }
      isWorking = false;
      edit_show_add(1);
      edit_show_add(2);
      edit_show_add(3);
      edit_hideall();
  }

