var cbrowser=new Object;
cbrowser.agt=navigator.userAgent.toLowerCase();
cbrowser.is_ie=((cbrowser.agt.indexOf("msie")!=-1)&&(cbrowser.agt.indexOf("opera")==-1));
cbrowser.is_opera=(cbrowser.agt.indexOf("opera")!=-1);
cbrowser.is_mac=(cbrowser.agt.indexOf("mac")!=-1);
cbrowser.is_mac_ie=(cbrowser.is_ie&&cbrowser.is_mac);
cbrowser.is_win_ie=(cbrowser.is_ie&&!cbrowser.is_mac);
cbrowser.is_gecko=(navigator.product=="Gecko");

function sleep(seconds) {   
    var start = new Date().getTime();
    while (new Date() < start + seconds*1000) {}
    return 0;
}

function showIt(m,show){
  if (show) {
      document.getElementById(m).style.display='block';
  } else
      document.getElementById(m).style.display='none';      
  return false;          
}

function toggleBlocks(m,s,d,h) {
      var a=new Array(); 
      a = s.split(',');
      //alert(document.getElementById(m).style.display);
      var b=true;
      if (document.getElementById(m).style.display=='block') b=false;
      var t=false;
      for (var i=0; i<a.length; i++) { t=showIt(a[i],false); }
      var a=new Array(); 
      a = h.split(',');      
      for (var i=0; i<a.length; i++) { document.getElementById(a[i]).className=''; }
      if (b) document.getElementById(d).className='und';
      return showIt(m,b);
}

var amActive=null;
var mnOver=false;
function showMenu(a,m,d){
	if (a!=amActive) p9.hidePopup();
	amActive=a;
	document.getElementById(m).innerHTML=document.getElementById(d).innerHTML;
	p9.showPopup(a);
}
function hideMenu(a) {
	setTimeout(function() {
		if (!mnOver&&a==amActive) {
			p9.hidePopup();
			amActive=null;
		}
    }, 1500);
}
function flipMenu(a,m,d){
	p9.hidePopup();
	if (a!=amActive) {
		amActive=a;
		//alert(a);
		document.getElementById(m).innerHTML=document.getElementById(d).innerHTML;
		p9.showPopup(a);
	} else {
		amActive=null;
	}
}
function overMenu(md) {
	mnOver=true;
}
function outMenu(md) {
	mnOver=false;
	setTimeout(function() {
		if (amActive==null) {
			p9.hidePopup();
		}
    }, 1500);
}
function trimText(i) {
	var a=i.replace(/^\s+/,'');
	return a.replace(/\s+$/,'');
}
function popupWinOpen(a,url,nam,wid,hei) {
  var popup_w = false;
  popup_w = window.open(url,nam,'width='+wid+',height='+hei+',scrollbars=no,resizable=yes');
  if (popup_w) popup_w.focus();
  else {
    var pf = document.getElementById(pwframe);
    if (pf.src!=url) pf.src = url;
    pw.offsetY = -40;
    pw.offsetX = -1*(wid+10);
    pw.width = wid;
    pw.height = hei+20;
    pw.showPopup(a);
  }
  return false;
}
function changeIMG(imgID,imgSRC){
  var img = document.getElementById(imgID);
  if (img==null) img = document.getElementByName(imgID);
  var dt = new Date();
  var suff = dt.getTime();
  var regImage = new Image(44,18);
  regImage.src = imgSRC+'?'+suff;
  if (img) img.src = regImage.src;
  //else alert(showProperties(img,imgID));
}
// Подсчет символов в поле textarea
function textarea_count(textarea,vid,maxvalue){
        var tdata=textarea.value;
        var cnt=tdata.length;
        var o=document.getElementById(vid);
        if (o.value) o.value=maxvalue-cnt; else o.innerHTML=maxvalue-cnt;
        if (cnt>maxvalue) {
           o.style.color='#F58A11';
           //textarea.value=revtext;
           textarea.value=tdata.substr(0,maxvalue);
        } else {
           o.style.color='#102085';
           revtext=tdata;
        }
}
function showProperties(obj,objName){
  var result = "The properties for the '" + objName + "' object:" + "\n";
  //var attr=getAttributes(obj);
  if (typeof(attr)!='undefined') obj=attr;
  for (var i in obj) {result += i + " = " + obj[i] + "\n";}
  return result;
}
function selRubr(val){
  if (typeof(arr_rubr)=='undefined') return false;
  document.getElementById('div_sel_pod').innerHTML=arr_rubr[val];
}
function submitenter(myfield,e,ss){
  var keycode='';
  var val=myfield.value;
  if (window.event) keycode=window.event.keyCode;
  else if (e) keycode=e.which;
  else return true;
  if (keycode==13) {
    if (val==''||val.length<3||val==ss) return false;
    myfield.form.submit();
    return false;
  }
  else return true;
}
function submitIt(myform){
  myform.submit();
  return true;
}
function checkIt(val) {
  var ok=false;
  if (val.length<2) return ok;
  var regexp = new RegExp("([0-9a-z]|_|-|\\.)+","i");
  var nval=val.replace(regexp,"");
  if (nval=="") ok=true;
  return ok;
}
function checkSelForm(frm){
  var the_frm=frm;
  if (the_frm.sel_city.value=='0'&&the_frm.sel_rubr.value=='0'&&the_frm.sel_pod.value=='0') {
      alert('Выберите из списка город, раздел!');
      return false;
  } else if (the_frm.sel_rubr.value!='0') {
      return true;
  }
}
function checkVote(the_form,els){
  var elts=(typeof(document.forms[the_form].elements[els])!='undefined')?document.forms[the_form].elements[els]:new Array();
  var elts_cnt=(typeof(elts.length)!='undefined')?elts.length:0;
  if (elts_cnt) {
      for (var i=0; i<elts_cnt; i++) {
          if (elts[i].checked) return true;
      }
  } else if (elts.value&&elts.checked) return true;
  return false;
}
function regMatch(val,reg) {
    var ok=false;
    var regexp = new RegExp("("+reg+")+","i");
    var nval=val.replace(regexp,"");
    if (nval!=val) ok=true;
    return ok;
}

function showCats(i,n,p) {
          var a='cata'+n+'_'+i;
          var d='catd'+n+'_'+i;
          if (p>0) {
              document.getElementById('rubr_result1').innerHTML=document.getElementById(d).innerHTML;
              p2.showPopup(a);
          } else {
              document.getElementById('rubr_result').innerHTML=document.getElementById(d).innerHTML;
              p1.showPopup(a);
          }
          return false;
}

function showRate(i,n,p) {
          var a='rats'+n+'_'+i;
          var d='ratd'+i;
          if (p>0) {
              document.getElementById('rate_result1').innerHTML=document.getElementById(d).innerHTML;
              p4.showPopup(a);
          } else {
              document.getElementById('rate_result').innerHTML=document.getElementById(d).innerHTML;
              p3.showPopup(a);
          }
          return false;
}

function showMess(i,a,p,c,p0) {   
          //alert(i+'='+a+'='+p+'='+c+'=');
          if (a==''||a=='maila_'||a=='maila') var a00='maila0_'+i; else a00=a;
          mess_uid=i;
          var mailfrm=document.getElementById('mail_form');
          if (mailfrm) var mlfrm=mailfrm.innerHTML; else return false;
          mlfrm=mlfrm.replace('uid=0','uid='+mess_uid);          
          var regexp = new RegExp('<div class=(")*findmess(")*(.)+?</div><br>','i');          
          if (c>0) mlfrm=mlfrm.replace(regexp,'');                      
          if (p>0) {
              var p00=(typeof(p0)!='undefined')?p0:p6;
              mess_res='mail_result1';
              document.getElementById(mess_res).innerHTML=mlfrm;              
          } else {
              var p00=(typeof(p0)!='undefined')?p0:p5;
              mess_res='mail_result';
              document.getElementById(mess_res).innerHTML=mlfrm.replace("ok.gif","ok_bg.gif");              
          }          
          //alert(a00);
          var a_ob=document.getElementById(a00);
          if (a_ob) p00.showPopup(a00);
          return false;
}

function showSubs(i,n,p,t,s) {
          var a='subsa'+n+'_'+i;
          var rdiv='';
          if (p>0) {
              rdiv='subs_result1';
          } else {
              rdiv='subs_result';
          }
          if (rdiv!='') {
          	  document.getElementById(rdiv).innerHTML='';
          	  if (s=='%tru%') var ss=1; else var ss=0;
          	  makeSubs(user_url,user_id,i,n,t,ss,rdiv,p,a);
          }
          return false;
}

function checkSubs(i,n,s,t,p,a) {
    var sp='subssp'+n+'_'+i;
    if (subs_done) {
        if (p>0) {
              	p8.showPopup(a);
        } else {
              	p7.showPopup(a);
        }
    	if (s) {
              		document.getElementById(sp).innerHTML=document.getElementById(sp).innerHTML.replace("ico_subs_"+t+".gif","ico_unsubs_"+t+".gif");
              		document.getElementById(sp).innerHTML=document.getElementById(sp).innerHTML.replace("%tru%","%fals%");
              		document.getElementById(sp).innerHTML=document.getElementById(sp).innerHTML.replace("Получать","Не получать");
        } else {
              		document.getElementById(sp).innerHTML=document.getElementById(sp).innerHTML.replace("ico_unsubs_"+t+".gif","ico_subs_"+t+".gif");
              		document.getElementById(sp).innerHTML=document.getElementById(sp).innerHTML.replace("%fals%","%tru%");
              		document.getElementById(sp).innerHTML=document.getElementById(sp).innerHTML.replace("Не получать","Получать");
        }
    }
}

function sendMess(murl,frm,rdiv) {
    var the_frm=frm;
    if (typeof(script_method)=='undefined') script_method=null;
    //alert(showProperties(the_frm,the_frm.name));
    var mtext=(typeof(the_frm.text)!='undefined')?the_frm.text.value:'';
    var mname=(typeof(the_frm.name)!='undefined')?the_frm.name.value:'';
    var memail=(typeof(the_frm.email)!='undefined')?the_frm.email.value:'';
    if (mtext=='') return false;
    if (mname=='') return false;
    if (typeof(mess_uid)!='undefined'&&typeof(the_frm.uid)!='undefined') the_frm.uid.value=mess_uid;    
    //document.getElementById(rdiv).innerHTML=document.getElementById('loading').innerHTML;        
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState>0) {
           if (req.responseJS) {
              var res=''+(req.responseJS.result||'');
              if (res!='') {
                 document.getElementById(rdiv).innerHTML=res;
              }
              return false;
           }           
        } 
        //alert(req.readyState+': '+req.responseJS)       
    } 
    //return false;      
    req.caching=false;
    req.open('POST',murl,true);
    req.send({'form':the_frm,'mode':'subsys','uid':mess_uid}); // 
    return false;
}

function makeSubs(uurl,uid,nid,ind,ntype,nsubs,rdiv,np,na) {
    if (nid=='') return false;
    if (ntype=='') return false;
    var d=false;
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState>0) {
           if (req.responseJS) {
              var res=''+(req.responseJS.result||'');
              if (res!='') {
                 document.getElementById(rdiv).innerHTML=res;
              }
              var rd=''+(req.responseJS.done||'');
              if (rd=='1') subs_done=true;
              if (subs_done) checkSubs(nid,ind,nsubs,ntype,np,na);
              return false;
           }
        }        
    }
    req.caching=false;
    req.open('GET',uurl,true);
    req.send({'t':ntype,'i':nid,'u':uid,'s':nsubs,'mode':'subsys'});
    return false;
}

function getComments(comurl,i,r,cdiv,rurl,c,u,cid,clid) {
    if (i==''||!i) return false;
    if (r==''||!r) return false;
    var cdhtml=document.getElementById(cdiv).innerHTML;
    var ldhtml=document.getElementById('loading').innerHTML;
    if (cdhtml=='') {
    	document.getElementById(cdiv).innerHTML=ldhtml;
    } else {
    	document.getElementById(cdiv).innerHTML=cdhtml+ldhtml;
    }
    document.getElementById(cdiv).style.display='block';
    //alert(comurl);
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState>0) {
           if (req.responseJS) {
              var res=''+(req.responseJS.result||'');
              if (res!='') {
                 document.getElementById(cdiv).innerHTML=res;
              }
              return false;
           }
        }
        //alert(req.readyState+'='+req.responseJS);
    }
    req.caching=true;
    req.open('GET',comurl,true);
    req.send({'i':i,'r':r,'c':c,'u':u,'cid':cid,'clid':clid,'cdiv':cdiv,'rurl':rurl,'mode':'subsys','what':'comments'});
    return false;
}

function getContext(curl,p,cdiv) {
    if (p==''||!p) return false;  
    //alert(p);
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState>0) {
           if (req.responseJS) {
              var res=''+(req.responseJS.result||'');
              if (res!='') {
                 document.getElementById(cdiv).innerHTML=res;
                 document.getElementById(cdiv).style.display='block';
              }
              return res;
           }
        }
    }
    req.caching=false;
    req.open('GET',curl,true);
    req.send({'pos':p,'mode':'subsys','what':'context'});
    return false;
}

function getContextArr(curl,a,prev) {
    if (typeof(a)=='undefined') return false;    
    var p=0;
    //alert(curl);
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState>0) {
           if (req.responseJS) {
              var res=''+(req.responseJS.result||'');              
              for(i=0;i<a.length;i++) {                 
                 if (eval("res=''+(req.responseJS.result_"+a[i]+"||'')")&&res!='') {                 
                    //alert(res);
                    var el=document.getElementById(prev+a[i]);
                    if (typeof(el)!='undefined') {
                      el.innerHTML=res;
                      el.style.display='block';      
                    }              
                 }
              }
              return false;
           }
        }
    }
    req.caching=false;
    req.open('GET',curl,true);
    req.send({'pos':p,'mode':'subsys','what':'context'});
    return false;    
    /*
    var b=new Array();
    var k=0;
    for(i=0;i<a.length;i++) {
      var res=false;
      if (!b.length) {  
        //while(!res) 
        res=getContext(curl,i,a[i],true);
        b[k]=res; 
        k++;
      } else {
        var n=false;
        //while(!res) 
        res=getContext(curl,i,a[i],n);
        for(j=0;j<b.length;j++) if (b[j]==res) { n=true; break; }
        if (!n) { b[k]=res; k++; document.getElementById(a[i]).innerHTML=res; document.getElementById(a[i]).style.display='block'; }
      }
    }   
    */
} 

function checkQuickSearch(qr,frm){    
    qs_timeout=null;
    if (qr.length<3) qr=frm.q.value; 
    if (qr.length>2) {         
        qs_timeout=setTimeout("var dls=doLoadSearch();",100); // 500
    }
    if (typeof(pqs)=='undefined') {
        var pqs = new PopupWindow("search_popup"); pqs.offsetY = 40; pqs.offsetX = -33; pqs.width = 200; pqs.height = 30;
    }       
    if (qr.length<3) pqs.hidePopup(); 
    return false;
}

function doLoadSearch() {     
    var the_frm=document.getElementById('quicksearch');
    var selcity=document.getElementById('sel_city').value;
    if (selcity=='0'||!selcity||selcity.length<1) selcity=the_frm.sel_city.value;
    if (the_frm.sel_city.value=='0') the_frm.sel_city.value=selcity;
    var qr=the_frm.q.value;
    //showSearchPopup(selcity,qr);
    if (typeof(search_url)=='undefined') search_url='/poisk/subsys.html';    
    if (typeof(smode)=='undefined') smode='subsys'; 
    if (typeof(script_method)=='undefined') script_method=null;        
    if (smode=='subsys') {
        var req = new JsHttpRequest();
        req.onreadystatechange = function() {
            if (req.readyState > 0) {
              if (req.responseJS) {
                  return onLoadSearchResult(req.responseJS);
              }
            }
        }
        req.caching=true;
        req.open(script_method,search_url,true);
        req.send({'form':the_frm,'mode':smode,'q':qr,'city':selcity,'what':'clients'}); // 
    }
    return false;
}

function onLoadSearchResult(obj) {
    var res=''+(obj.res||'');
    var ht=''+(obj.ht||'');
    if (qs_timeout) clearTimeout(qs_timeout);
    return showSearchPopup(res,ht);
}

function showSearchPopup(res,ht) {
    var a='a_quicksearch';
    if (typeof(pqs)=='undefined') {
      var pqs = new PopupWindow("search_popup"); pqs.offsetY = 45; pqs.offsetX = -34; pqs.width = 200; pqs.height = 30;
    }   
    document.getElementById('search_result').innerHTML=ht; 
    if (ht=='') pqs.hidePopup(); else pqs.showPopup(a);
    return false;
}

var vc_timeout=0;

function checkCompList(frm_name){    
    if (typeof(vc_timeout)=='undefined') vc_timeout=0;
    var the_frm=document.getElementById(frm_name);
    var qr='';
    var clp='';
    var clid='';
    if (typeof(the_frm.client_parent)!='undefined') clp=the_frm.client_parent.value;    
    if (typeof(the_frm.cl_id)!='undefined') clid=the_frm.cl_id.value;
    if (clp!=''||clid!='') { 
      if (vc_timeout) { clearTimeout(vc_timeout); vc_timeout=0; } 
      return false; 
    }
    if (typeof(the_frm.q)!='undefined') qr=the_frm.q.value;  
    if (qr.length>2) { 
        if (!vc_timeout) vc_timeout=setTimeout("var dlc=doLoadCompList('"+frm_name+"');",1000); // 500  
        //sleep(1);
        //var dlc=doLoadCompList(frm_name);                
    }        
    if (typeof(pvc)=='undefined') var pvc = new PopupWindow("voted_popup"); 
    if (qr.length<3) pvc.hidePopup();
    if (typeof(pqw)=='undefined') var pqw = new PopupWindow("qwrite_popup"); 
    if (qr.length<3) pqw.hidePopup();      
    return false;
}

function doLoadCompList(frm_name) {     
    if (typeof(vc_timeout)=='undefined') vc_timeout=0;
    if (typeof(frm_name)=='undefined'||frm_name=='') frm_name='voted_comp_frm'; 
    var the_frm=document.getElementById(frm_name);
    var qr='';
    var wr='';
    if (typeof(the_frm.q)!='undefined') qr=the_frm.q.value;
    if (typeof(the_frm.w)!='undefined') wr=the_frm.w.value;
    if (typeof(search_url)=='undefined') search_url='/poisk/subsys.html';    
    if (typeof(smode)=='undefined') smode='subsys'; 
    if (typeof(script_method)=='undefined') script_method=null;        
    if (smode=='subsys') {
        var req = new JsHttpRequest();
        req.onreadystatechange = function() {
            if (req.readyState > 0) {
              if (req.responseJS) {
                  if (vc_timeout) { clearTimeout(vc_timeout); vc_timeout=0; }
                  var obj=req.responseJS;
                  var res=''+(obj.res||'');
                  var md=''+(obj.md||'');
                  var xm=''+(obj.ht||''); 
                  //var r=showCompListPopup('XML: '+xm);
                  if (xm!='') {
                    var arv=parseCompListXML(xm);                       
                    if (wr=='clients') return onLoadWriteResult(arv,md,res,search_url.replace('subsys.html',''),qr);
                    else if (wr=='c2c') return onLoadDissResult(arv,md,res);
                    else return onLoadCompListResult(arv,md,res,search_url.replace('subsys.html',''),qr);
                  } else if (res!='') {// else return showCompListPopup(res);
                    if (wr=='clients') {
                        var a='a_rwl';
                        document.getElementById('qwrite_result').innerHTML=res;
                        if (typeof(pqw)=='undefined') var pqw = new PopupWindow("qwrite_popup"); 
                        pqw.offsetY = 20; pqw.offsetX = -220; pqw.width = 300; pqw.height = 30; pqw.showPopup(a);  
                    } else if (wr=='c2c') {
                        var a='a_rdl';
                        document.getElementById('qdiss_result').innerHTML=res;
                        if (typeof(pqw)=='undefined') var pqw = new PopupWindow("qdiss_popup"); 
                        pqw.offsetY = 20; pqw.offsetX = -220; pqw.width = 200; pqw.height = 30; pqw.showPopup(a);                      
                    } else {
                        var a='a_vcl';
                        document.getElementById('voted_result').innerHTML=res;
                        if (typeof(pvc)=='undefined') var pvc = new PopupWindow("voted_popup"); 
                        pvc.offsetY = 17; pvc.offsetX = -130; pvc.width = 300; pvc.height = 30; pvc.showPopup(a);
                    }
                  }                   
                  return false;
              }
            }
        }
        var what='clients'; 
        if (wr!='') what=wr;
        req.caching=true;
        req.open(script_method,search_url,true);
        req.send({'form':the_frm,'mode':smode,'type':'xml','q':qr,'what':what}); // 
    }
    return false;
}

function parseCompListXML(text) {     
    if (window.DOMParser) {
      parser=new DOMParser();
      xmlDoc=parser.parseFromString(text,"text/xml");            
    } 
    /*
    else if (document.implementation&&document.implementation.createDocument) { // 
      var xmlElem = document.createElement("xml");
      xmlElem.innerHTML = text;
      xmlDoc = document.implementation.createDocument("","",null);
      for (var i=0; i<xmlElem.childNodes.length; i++) {
        xmlDoc.importNode(xmlElem.childNodes.item(i), true);
      }
    } 
    */
    else { // Internet Explorer
      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.async="false";
      xmlDoc.loadXML(text); 
    }   
    var arv = new Array();   
    var nl = xmlDoc.getElementsByTagName('item');         
    for (var i=0;i<nl.length;i++) {  
      arv[i]=new Array();
      if (typeof(nl[i]['client_id'])=='undefined') var nli=getAttributes(nl[i]); else var nli=nl[i];  
      if (typeof(nli['client_froze'])!='undefined') arv[i]['client_froze']=nli['client_froze']; else arv[i]['client_froze']=0;
      arv[i]['client_id']=nli['client_id'];
      arv[i]['client_pid']=nli['client_pid'];
      arv[i]['client_city']=nli['client_city'];
      arv[i]['cat_name']=nli['cat_name'];
      arv[i]['client_name']=nli['title'];
      arv[i]['href']=nli['href']; 
    }  
    return arv;    
}

function onClearWriteResult() {
    document.review_write_frm.q.value='';
    //document.review_write_frm.client_froze.value='';
    document.review_write_frm.client_name.value='';
    document.review_write_frm.client_parent.value='';
    document.review_write_frm.cl_id.value='';
    //document.review_write_frm.notify_clients.value=''; 
    document.review_write_frm.rateval.value='';
    document.review_write_frm.rate_client_id.value='';     
    document.review_write_frm.action='';
    document.getElementById('clear_cl_name').innerHTML='';
    document.getElementById('a_rwl').style.visibility='visible';
    if (typeof(pqw)=='undefined') var pqw = new PopupWindow("qwrite_popup"); 
    pqw.hidePopup();  
    return false;  
}

function onSelectWriteResult() {
    
    document.getElementById('a_rwl').style.visibility='hidden';
    var clearcl = document.getElementById('clear_cl_name'); 
    clearcl.innerHTML='';
    
    var elv = document.createElement('a');
    clearcl.appendChild(elv);
    elv.name='a_clear_cl_name';
    elv.href='#a_clear_cl_name';
    elv.onclick = function() { 
        return onClearWriteResult();              
    };    
    
    var eliv = document.createElement('img');
    elv.appendChild(eliv);
    eliv.src="/img/close.gif";    
    eliv.style.margin="3px";
    eliv.align="absmiddle";
    eliv.title="Очистить результаты поиска";
    eliv.alt="Очистить результаты поиска"; 
    
    return false; 
}


function onLoadWriteResult(nl,md,res,search_url,qr) {  
    if (!nl.length) return false;
    
    var a='a_rwl';   
    
    var votedres = document.getElementById('qwrite_result');
    votedres.innerHTML='';
    //var eltxt=document.createTextNode(res+"\n");
    //votedres.appendChild(eltxt);  
    var elres=document.createElement('div');
    elres.innerHTML=res+"\n";
    votedres.appendChild(elres);
    
    for (var i=0;i<nl.length;i++) {      
      var client_froze=0;
      if (typeof(nl[i]['client_froze'])!='undefined') client_froze=parseInt(nl[i]['client_froze']);      
      var client_id=nl[i]['client_id'];
      var client_pid=nl[i]['client_pid'];      
      var client_name=clearHTML(nl[i]['client_name']);
      var client_href=nl[i]['href'];
      var client_city=nl[i]['client_city'];      
      if (typeof(client_city)!='undefined'&&client_city!=''&&client_city!='undefined') client_city=' | '+client_city; else client_city='';
      var cat_name=nl[i]['cat_name'];
      if (typeof(cat_name)!='undefined'&&cat_name!=''&&cat_name!='undefined') cat_name=' | '+cat_name; else cat_name='';     

      var eld = document.createElement('div');
      votedres.appendChild(eld);
      eld.id='div_rwl'+client_id;
      eld.client_id=client_id;
      eld.client_pid=client_pid;
      eld.client_name=client_name; 
      eld.style.padding='5px';   
      
      if (client_froze>0||client_href=='') {
        
        var elt=document.createTextNode(client_name+" (отказалась от диалога)\n"); 
        eld.appendChild(elt); 
                 
      } else {
    
        var elv = document.createElement('a');
        eld.appendChild(elv);    
        elv.name='a_rwl'+client_id;
        elv.href='#a_rwl'+client_id;
        elv.client_id=client_id;
        elv.client_pid=client_pid;
        elv.client_name=client_name;
        elv.client_href=client_href.replace('.html','')+'/action.html';
     
        elv.parent_div='div_rwl'+client_id;  
        elv.onclick = function() { 
          if (typeof(vc_timeout)!='undefined'&&vc_timeout) { clearTimeout(vc_timeout); vc_timeout=0; }
          document.review_write_frm.q.value=this.client_name;
          document.review_write_frm.client_name.value=this.client_name;
          document.review_write_frm.client_parent.value=this.client_pid;
          document.review_write_frm.cl_id.value=this.client_id; 
          //document.review_write_frm.notify_clients.value=this.client_id;  
          document.review_write_frm.rateval.value=1;
          document.review_write_frm.rate_client_id.value=this.client_id;           
          document.review_write_frm.action=this.client_href;          
          if (typeof(pqw)=='undefined') var pqw = new PopupWindow("qwrite_popup"); 
          pqw.hidePopup();
          return onSelectWriteResult();               
        }; 
        
        var elt=document.createTextNode(client_name+"\n"); // +client_city+cat_name
        elv.appendChild(elt);      
      
      }   
    }
    
    var elbr = document.createElement('br');
    votedres.appendChild(elbr);
    elbr.clear='all';
    elbr.style.clear='both';
    
    var ela = document.createElement('a');
    votedres.appendChild(ela);
    eld.style.decoration='underline';
    eld.style.float='right'; 
    //ela.target='_blank';
    ela.href=search_url+'?isl=1&q='+qr;    
    elta=document.createTextNode('все результаты');
    ela.appendChild(elta);     
       
    if (typeof(pqw)=='undefined') var pqw = new PopupWindow("qwrite_popup"); 
    pqw.offsetY = 20; pqw.offsetX = -220; pqw.width = 200; pqw.height = 30; pqw.showPopup(a);       
    
    return false;      
}

function onClearDissResult() {
    document.review_diss_frm.q.value='';
    document.review_diss_frm.client_name.value='';
    document.review_diss_frm.client_parent.value='';
    //document.review_diss_frm.cl_id.value='';
    document.review_diss_frm.action='';
    document.getElementById('clear_c2c_name').innerHTML='';
    document.getElementById('a_rdl').style.visibility='visible';
    if (typeof(pqd)=='undefined') var pqd = new PopupWindow("qdiss_popup"); 
    pqd.hidePopup();  
    return false;  
}

function onSelectDissResult() {
    
    document.getElementById('a_rdl').style.visibility='hidden';
    var clearcl = document.getElementById('clear_c2c_name'); 
    clearcl.innerHTML='';
    
    var elv = document.createElement('a');
    clearcl.appendChild(elv);
    elv.name='a_clear_c2c_name';
    elv.href='#a_clear_c2c_name';
    elv.onclick = function() { 
        return onClearDissResult();              
    };    
    
    var eliv = document.createElement('img');
    elv.appendChild(eliv);
    eliv.src="/img/close.gif";    
    eliv.style.margin="3px";
    eliv.align="absmiddle";
    eliv.title="Очистить результаты поиска";
    eliv.alt="Очистить результаты поиска"; 
    
    return false; 
}

function onLoadDissResult(nl,md,res) {  
    if (!nl.length) return false;
    
    var a='a_rdl';   
    
    var votedres = document.getElementById('qdiss_result');
    votedres.innerHTML='';
    //var eltxt=document.createTextNode(res+'\n');
    //votedres.appendChild(eltxt);  
    var elres=document.createElement('div');
    elres.innerHTML=res+"\n";
    votedres.appendChild(elres);    
    
    for (var i=0;i<nl.length;i++) {      
      var client_id=nl[i]['client_id'];
      var client_pid=nl[i]['client_pid'];      
      var client_name=clearHTML(nl[i]['client_name']);
      var client_href=nl[i]['href'];
      var client_city=nl[i]['client_city'];
      if (client_city!=''&&client_city!='undefined') client_city=', '+client_city; else client_city='';     

      var eld = document.createElement('div');
      votedres.appendChild(eld);
      eld.id='div_rwl'+client_id;
      eld.client_id=client_id;
      eld.client_pid=client_pid;
      eld.client_name=client_name; 
      eld.style.padding='5px';   
    
      var elv = document.createElement('a');
      eld.appendChild(elv);    
      elv.name='a_rwl'+client_id;
      elv.href='#a_rwl'+client_id;
      elv.client_id=client_id;
      elv.client_pid=client_pid;
      elv.client_name=client_name;
      elv.client_href=client_href.replace('.html','')+'/action.html';
     
      elv.parent_div='div_rwl'+client_id;  
      elv.onclick = function() { 
          if (typeof(vc_timeout)!='undefined'&&vc_timeout) { clearTimeout(vc_timeout); vc_timeout=0; }
          document.review_diss_frm.q.value=this.client_name;
          document.review_diss_frm.client_name.value=this.client_name;
          document.review_diss_frm.client_parent.value=this.client_pid;
          //document.review_diss_frm.cl_id.value=this.client_id;           
          document.review_diss_frm.action=this.client_href;
          if (typeof(pqd)=='undefined') var pqd = new PopupWindow("qdiss_popup"); 
          pqd.hidePopup();
          return onSelectDissResult();               
      }; 
        
      elt=document.createTextNode(client_name+'\n'); // +client_city
      elv.appendChild(elt);         
    }
       
    if (typeof(pqw)=='undefined') var pqd = new PopupWindow("qdiss_popup"); 
    pqd.offsetY = 20; pqd.offsetX = -220; pqd.width = 200; pqd.height = 30; pqd.showPopup(a);       
    
    return false;      
}

function onLoadCompListResult(nl,md,res,search_url,qr) {  
    if (!nl.length) return false;
    
    var a='a_vcl';   
    
    var votedres = document.getElementById('voted_result');
    votedres.innerHTML='';
    var eltxt=document.createTextNode(res+'\n');
    votedres.appendChild(eltxt);    
    
    var eltab = document.createElement('table');
    if (md!='') eltab.id=md;
    eltab.border='0';    
    votedres.appendChild(eltab);
    
    var eltb = document.createElement('tbody');
    eltab.appendChild(eltb);   

    for (var i=0;i<nl.length;i++) {      
      var client_id=nl[i]['client_id'];      
      var client_name=clearHTML(nl[i]['client_name']);
      var client_city=nl[i]['client_city'];
      if (client_city!=''&&client_city!='undefined') client_city=', '+client_city; else client_city='';
      
      var eltr = document.createElement('tr');
      eltb.appendChild(eltr);      
      
      var eltdv = document.createElement('td');
      eltdv.valign="middle";
      eltr.appendChild(eltdv);
      
      var eltdu = document.createElement('td');
      eltdu.valign="middle";
      eltr.appendChild(eltdu);       
      
      var eltdt = document.createElement('td');
      eltr.appendChild(eltdt);        
      
      var elv = document.createElement('a');
      elv.name='a_vclv'+client_id;
      elv.href='#a_vclv'+client_id;      
      elv.client_id=client_id;
      elv.client_name=client_name;
      elv.onclick = function() { 
        if (typeof(vc_timeout)!='undefined'&&vc_timeout) { clearTimeout(vc_timeout); vc_timeout=0; }
        document.review_frm.cl_id.value='0';
        return addCompToList(this.client_id,this.client_name,'voted_comp_div','unvoted_comp_div');       
      };  
      eltdv.appendChild(elv);       
   
      var eliv = document.createElement('img');
      eliv.src="/img/rec1.gif";
      eliv.title="Рекомендовать";
      eliv.alt="Рекомендовать";      

      elv.appendChild(eliv);  
      
      var elu = document.createElement('a');
      elu.name=elu.href='#a_vclu'+nl[i]['client_id'];
      elu.client_id=client_id;
      elu.client_name=client_name;
      elu.onclick = function() { 
        if (typeof(vc_timeout)!='undefined'&&vc_timeout) { clearTimeout(vc_timeout); vc_timeout=0; }
        document.review_frm.cl_id.value='0';
        return addCompToList(this.client_id,this.client_name,'unvoted_comp_div','voted_comp_div');       
      };        
      eltdu.appendChild(elu);               
    
      var eliu = document.createElement('img');
      eliu.src="/img/rec0.gif";
      eliu.title="НЕ рекомендовать";
      eliu.alt="НЕ рекомендовать";
      
      elu.appendChild(eliu);  
      
      var eltxt=document.createTextNode(client_name+'\n'); // +client_city
      eltdt.appendChild(eltxt);                 

    }   
    
    if (typeof(pvc)=='undefined') var pvc = new PopupWindow("voted_popup"); 
    pvc.offsetY = 17; pvc.offsetX = -130; pvc.width = 300; pvc.height = 30; pvc.showPopup(a);    
    
    return false;    
}

function checkInArray(qid,arr,isstr) {
    var narr=new Array();
    if (isstr) { if (arr.indexOf('|')>=0) narr=arr.split('|'); else if (arr!='') narr[0]=arr; } else narr=arr;
    for (var i=0;i<narr.length;i++) if (narr[i]==qid) return qid;   
    return false;
}

function pushToArray(qid,arr,isstr) {
    var ck=checkInArray(qid,arr,isstr);
    if (ck) return arr;
    var narr=new Array();
    alert('pushToArray:'+qid);
    if (isstr) { if (arr.indexOf('|')>=0) narr=arr.split('|'); else if (arr!='') narr[0]=arr; } else narr=arr;
    narr[narr.length]=qid;  
    if (isstr) arr=narr.join('|'); else arr=narr;
    alert(arr);
    return arr;
}

function delFromArray(qid,arr,isstr) {    
    //var ck=checkInArray(qid,arr,isstr);
    //if (!ck) return arr;
    var narr=new Array();
    if (isstr) { alert(arr); if (arr.indexOf('|')>=0) narr=arr.split('|'); else if (arr!='') narr[0]=arr; } else narr=arr;   
    for (var i=0;i<narr.length;i++) { 
      if (narr[i]==qid) { 
        narr.splice(i,1); // delete arr[i];          
        break;
      }
    }  
    narr.sort();   
    if (isstr) arr=narr.join('|'); else arr=narr;
    return arr;
}

if (typeof(arr_comp_list)=='undefined'||!arr_comp_list) var arr_comp_list=new Array();

function clearCompList(dv) {
    document.review_frm.cl_id.value='';
    document.getElementById(dv).innerHTML='';  
}

function delCompFromList(cid,d) {
    var vdiv = document.getElementById(d);
    for (var i=0;i<vdiv.childNodes.length;i++) {
      curr = vdiv.childNodes[i];      
      if (curr.client_id==cid) vdiv.removeChild(curr); 
    }
    return false;
}

function getCompFromList(cid,d) {
    var vdiv = document.getElementById(d);    
    for (var i=0;i<vdiv.childNodes.length;i++) {
      curr = vdiv.childNodes[i];
      if (curr.client_id==cid) return curr;
    }
    return false;
}

function addCompToList(cid,cname,vd,ud){    
    
    var vdiv = document.getElementById(vd);
    if (vdiv.childNodes.length>4) return false;  
            
    var g=getCompFromList(cid,vd);
    if (g) return false;
    
    delCompFromList(cid,ud);
    
    var eld = document.createElement('div');
    vdiv.appendChild(eld);
    eld.id='div_vclv'+cid;
    eld.client_id=cid;
    eld.client_name=cname;    
    
    var elv = document.createElement('a');    
    elv.name=''+vd+ud+cid;
    elv.href='#'+vd+ud+cid;
    elv.client_id=cid;
    elv.client_name=cname;
    elv.parent_div=vd;  
    elv.onclick = function() { 
        return delCompFromList(this.client_id,this.parent_div);         
    };     
    eld.appendChild(elv);
   
    var eliv = document.createElement('img');
    elv.appendChild(eliv);
    eliv.src="/img/close.gif";    
    eliv.style.margin="3px";
    eliv.align="absmiddle";
    eliv.title="Удалить";
    eliv.alt="Удалить";    
    
    elt=document.createTextNode(cname+'\n');  
    eld.appendChild(elt); 
        
    return false;
}


function showCompListPopup(ht) {
    var a='a_vcl'; 
    if (typeof(pvc)=='undefined') {
      var pvc = new PopupWindow("voted_popup"); pvc.offsetY = -5; pvc.offsetX = -10; pvc.width = 200; pvc.height = 30;
    }   
    document.getElementById('voted_result').innerHTML=ht; 
    if (ht=='') pvc.hidePopup(); else pvc.showPopup(a);
    return false;
}

function getAttributes(node) {
  var ret = new Object();
  // element.getAttribute("attrName");
  if(node.attributes)
  for(var i=0; i<node.attributes.length; i++) {
    var attr = node.attributes[i];
    ret[attr.name] = attr.value;
  }
  return ret;
}
  

function getClientInfo(curl,i,cdiv) {
    if (curl==''||i=='') return false;
    var old=document.getElementById(cdiv).innerHTML;
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState>0) {
           if (req.responseJS) {
              var res=''+(req.responseJS.result||'');
              if (res!='') {
                 document.getElementById(cdiv).innerHTML=old+''+res;
                 document.getElementById(cdiv).style.visibility='visible';
              }
              return false;
           }
        }
    }
    req.caching=false;
    req.open('GET',curl,true);
    req.send({'i':i,'cdiv':cdiv,'mode':'subsys','what':'client'});
    return false;
}

function parseResponseText(txt) {
  //alert(txt);
  var req = new Object;
  req.res='';
  req.sql='';
  req.ht='';
  //alert(showProperties(req,'parsed json'));
  return req;
}

function parseResponseXML(xml) {
  //alert(showProperties(xml,'responsexml'));
  var req = new Object;
  req.ok=0;
  req.res='';
  req.sql='';
  req.ht='';
  jQuery('response',xml).each(function(){
            req.ok=jQuery(this).find('ok').text();
            req.res+=jQuery(this).find('res').text();
            req.ht+=jQuery(this).find('ht').text();
            req.sql+=jQuery(this).find('sql').text();
  });
  //alert(showProperties(req,'parsed xml'));
  return req;
}


function savePage(url,id,form) {
    var the_frm=form;
    //if (html=='') return false;
    if (id=='') return false;
    if (typeof(script_method)=='undefined') script_method='POST';
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState>0) {
           if (req.responseJS) {
              return false;
           }
        }
    }
    req.caching=false;
    req.open(script_method,url,true);
    req.send({'form':the_frm,'action':'save','pid':id,'mode':'subsys'}); // ,'page':html
    return false;
}

function getPage(url,id,d1,d2) {
    if (typeof(script_method)=='undefined') script_method='GET';
    if (!id) return false;
    var req = new JsHttpRequest();
    req.onreadystatechange = function() {
        if (req.readyState>0) {
           if (req.responseJS) {
              if (res!='') {
                 document.getElementById(d1).value=document.getElementById(d2).innerHTML=res;
              }
              return false;
           }
        }
    }
    req.caching=false;
    req.open(script_method,url,true);
    req.send({'action':'get','pid':id,'mode':'subsys'});
    return false;
}

function clearHTML(i){
	var D='';
	if (i!='') {
		D=i;
		// make one line
		D = D.replace(/\r\n/g, ' ').
			replace(/\n/g, ' ').
			replace(/\r/g, ' ').
			replace(/\&nbsp\;/g,' ').
			replace(/\&quot\;/g,'"');

		// keep tags, strip attributes
		D = D.replace(/ class=[^\s|>]*/gi,'').
			//replace(/<p [^>]*TEXT-ALIGN: justify[^>]*>/gi,'<p align="justify">').
			replace(/ style=\"[^>]*\"/gi,'').
			replace(/ align=[^\s|>]*/gi,'');

		//clean up tags
		D = D.replace(/<b [^>]*>/gi,'<b>').
			replace(/<i [^>]*>/gi,'<i>').
			replace(/<li [^>]*>/gi,'<li>').
			replace(/<ul [^>]*>/gi,'<ul>');

		// replace outdated tags
		D = D.replace(/<b>/gi,'<strong>').
			replace(/<\/b>/gi,'</strong>');

		// mozilla doesn't like <em> tags
		D = D.replace(/<em>/gi,'<i>').
			replace(/<\/em>/gi,'</i>');

		// kill unwanted tags
		D = D.replace(/<\?xml:[^>]*>/g, '').       // Word xml
			replace(/<\/?st1:[^>]*>/g,'').     // Word SmartTags
			replace(/<\/?[a-z]\:[^>]*>/g,'').  // All other funny Word non-HTML stuff
			replace(/<\/?font[^>]*>/gi,'').    // Disable if you want to keep font formatting
			replace(/<\/?span[^>]*>/gi,' ').
			replace(/<\/?div[^>]*>/gi,' ').
			replace(/<\/?pre[^>]*>/gi,' ').
			replace(/<\/?h[1-6][^>]*>/gi,' ');

		//remove empty tags
		//D = D.replace(/<strong><\/strong>/gi,'').
		//replace(/<i><\/i>/gi,'').
		//replace(/<P[^>]*><\/P>/gi,'');

		// nuke double tags
		oldlen = D.length + 1;
		while(oldlen > D.length) {
			oldlen = D.length;
			// join us now and free the tags, we'll be free hackers, we'll be free... ;-)
			D = D.replace(/<([a-z][a-z]*)> *<\/\1>/gi,' ').
				replace(/<([a-z][a-z]*)> *<([a-z][^>]*)> *<\/\1>/gi,'<$2>');
		}
		D = D.replace(/<([a-z][a-z]*)><\1>/gi,'<$1>').
			replace(/<\/([a-z][a-z]*)><\/\1>/gi,'<\/$1>');

		// nuke double spaces
		D = D.replace(/  */gi,' ');
	}
	return D;
}


function MM_preloadImages() { //v3.0
 var d=document;
 if (d.images) {
    if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments;
    for(i=0;i<a.length;i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i]; }
 }
}

function showError(msg,url,ln) {
         var strValues = "?errMsg=" + escape(msg);
         strValues += "&errLine=" + ln;
         strValues += "&queryString=" + escape(location.search);
         strValues += "&Url=" + escape(location.pathname);
         strValues += "&HTTPRef=" + escape(document.referrer);
         alert(strValues);
         //return false;
}
//try { window.onerror=showError; }  catch(er) {}



//////////////////////////////////// xml2array() ////////////////////////////////////////
//See http://www.openjs.com/scripts/xml_parser/
var not_whitespace = new RegExp(/[^\s]/);//This can be given inside the funciton - I made it a global variable to make the scipt a little bit faster.
var parent_count;
//Process the xml data
function xml2array(xmlDoc,parent_count) {
	var arr;
	var parent = "";
	parent_count = parent_count || new Object;

	var attribute_inside = 0; /*:CONFIG: Value - 1 or 0
	*	If 1, Value and Attribute will be shown inside the tag - like this...
	*	For the XML string...
	*	<guid isPermaLink="true">http://www.bin-co.com/</guid>
	*	The resulting array will be...
	*	array['guid']['value'] = "http://www.bin-co.com/";
	*	array['guid']['attribute_isPermaLink'] = "true";
	*	
	*	If 0, the value will be inside the tag but the attribute will be outside - like this...	
	*	For the same XML String the resulting array will be...
	*	array['guid'] = "http://www.bin-co.com/";
	*	array['attribute_guid_isPermaLink'] = "true";
	*/

	if(xmlDoc.nodeName && xmlDoc.nodeName.charAt(0) != "#") {
		if(xmlDoc.childNodes.length > 1) { //If its a parent
			arr = new Object;
			parent = xmlDoc.nodeName;
			
		}
	}
	var value = xmlDoc.nodeValue;
	if(xmlDoc.parentNode && xmlDoc.parentNode.nodeName && value) {
		if(not_whitespace.test(value)) {//If its a child
			arr = new Object;
			arr[xmlDoc.parentNode.nodeName] = value;
		}
	}

	if(xmlDoc.childNodes.length) {
		if(xmlDoc.childNodes.length == 1) { //Just one item in this tag.
			arr = xml2array(xmlDoc.childNodes[0],parent_count); //:RECURSION:
		} else { //If there is more than one childNodes, go thru them one by one and get their results.
			var index = 0;

			for(var i=0; i<xmlDoc.childNodes.length; i++) {//Go thru all the child nodes.
				var temp = xml2array(xmlDoc.childNodes[i],parent_count); //:RECURSION:
				if(temp) {
					var assoc = false;
					var arr_count = 0;
					for(key in temp) {
						if(isNaN(key)) assoc = true;
						arr_count++;
						if(arr_count>2) break;//We just need to know wether it is a single value array or not
					}

					if(assoc && arr_count == 1) {
						if(arr[key]) { 	//If another element exists with the same tag name before,
										//		put it in a numeric array.
							//Find out how many time this parent made its appearance
							if(!parent_count || !parent_count[key]) {
								parent_count[key] = 0;

								var temp_arr = arr[key];
								arr[key] = new Object;
								arr[key][0] = temp_arr;
							}
							parent_count[key]++;
							arr[key][parent_count[key]] = temp[key]; //Members of of a numeric array
						} else {
							parent_count[key] = 0;
							arr[key] = temp[key];
							if(xmlDoc.childNodes[i].attributes && xmlDoc.childNodes[i].attributes.length) {
								for(var j=0; j<xmlDoc.childNodes[i].attributes.length; j++) {
									var nname = xmlDoc.childNodes[i].attributes[j].nodeName;
									if(nname) {
										/* Value and Attribute inside the tag */
										if(attribute_inside) {
											var temp_arr = arr[key];
											arr[key] = new Object;
											arr[key]['value'] = temp_arr;
											arr[key]['attribute_'+nname] = xmlDoc.childNodes[i].attributes[j].nodeValue;
										} else {
										/* Value in the tag and Attribute otside the tag(in parent) */
											arr['attribute_' + key + '_' + nname] = xmlDoc.childNodes[i].attributes[j].nodeValue;
										}
									}
								} //End of 'for(var j=0; j<xmlDoc. ...'
							} //End of 'if(xmlDoc.childNodes[i] ...'
						}
					} else {
						arr[index] = temp;
						index++;
					}
				} //End of 'if(temp) {'
			} //End of 'for(var i=0; i<xmlDoc. ...'
		}
	}

	if(parent && arr) {
		var temp = arr;
		arr = new Object;
		
		arr[parent] = temp;
	}
	return arr;
}
