function LoadStatus(result,errorcode) {
// var params="status=1"+"&result="+encodeURIComponent(result)+"&errorcode="+encodeURIComponent(errorcode);
 var params="status=1"+"&result="+result+"&errorcode="+errorcode;
 var xld=new XML_Load("/cms/status.htm","GET",params,null,null);
 if(xld.IsReady()) {
  xld.OnReady=function(status,list,ldata) {
   var container=document.getElementById("Status");
   if(container && container!=undefined){
    while(container.hasChildNodes()) container.removeChild(container.lastChild);
    container.innerHTML=ldata;
   }
   var arr=ldata.match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
   if(arr) {
    for(var a=0;a<arr.length;a++) {
     arr[a].match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
     var script=RegExp.$1;
     window.eval(script);
     }
    }
   }
  xld.Load();
  }
 }


function LoadTable(id,fieldname,skipform,_location) {
 if(!fieldname) fieldname='idi';
 document.getElementById('status_field').innerText='Загрузка объекта...';
 if(document.getElementById('record_create')) document.getElementById('record_create').style.display='none';
 if(document.getElementById('record_save')) document.getElementById('record_save').style.display='none';
 if(document.getElementById('record_delete')) document.getElementById('record_delete').style.display='none';
 var locs;
 if(_location) locs=_location;
 else locs=document.location.toString();
 locs=locs.replace(new RegExp('&'+fieldname+'[^&]*'),'');
 loc=locs+'&'+fieldname+'='+id+'&getxml=true';
 parts=loc.split('?');
 var xl=new XML_Load(parts[0],"GET",parts[1],"XML",null);
 if(xl.IsReady()) {
   xl.OnReady=function(status,list,ldata) {
    var v=XML_FindSubRootSection(ldata,"BUTTONS");
    if(v!=null) {
     if(v.getAttribute('CREATE')=='TRUE') {
      if(document.getElementById('record_create'))
       document.getElementById('record_create').style.display='';
      }
     if(v.getAttribute('SAVE')=='TRUE') {
      if(document.getElementById('record_save'))
       document.getElementById('record_save').style.display='';
      }
     if(v.getAttribute('DELETE')=='TRUE') {
      if(document.getElementById('record_delete'))
       document.getElementById('record_delete').style.display='';
      }
     }
    var names={};
    var els=0;
    var v=XML_FindSubRootSection(ldata,"RESULT");
    if(v!=null) {
     var src=v.getAttribute("STATUS")?"/img/status_ok.gif":"/img/status_bad.gif";
     var msg=v.getAttribute("MESSAGE");
     document.getElementById('status_img').src=src;
     document.getElementById('status_field').innerText=msg;
     return;
     }
    v=XML_FindSubRootSection(ldata,"SET");
    if(!skipform) {
     if(v!=null) {
      if(document.getElementById("record_title"))
       document.getElementById("record_title").innerText=v.getAttribute('TITLE');
      v=v.firstChild;
      while(v) {
       type=v.getAttribute('TYPE');
       name=v.getAttribute('NAME');
       names[els++]=name;
       value=v.getAttribute('VALUE');
       disabled=(v.getAttribute('DISABLED')=='TRUE'?true:false);
       mandatory=(v.getAttribute('MANDATORY')=='TRUE'?true:false);
       if(name=="id")
        document.getElementById('id').value=value;
       else if((type==5)||(type==8)) { // pointer, constant
        var obj=eval("cs"+name);
        obj.container.innerHTML="";
        obj=new CSelect(document.getElementById("csel"+name),"field_"+name,"424","13","17","","150","");
        obj.addOption("...","");
        var w=v.firstChild;
        while(w) {
         _name=w.getAttribute('NAME');
         _value=w.getAttribute('VALUE');
         obj.addOption(_name,_value);
         w=w.nextSibling;
         }
        if(value) obj.setSelectedByValue(value);
        if(disabled) obj.Enable(false);
        if(disabled) document.getElementById("field_"+name).disabled=true;
        else document.getElementById("field_"+name).disabled=false;
        }
       else if(type==7) { // tree
        var tree=eval(name+"Tree");
        tree.Build(v.getAttribute('ELTYPE'),v.getAttribute('VALUE'));
        if(disabled) document.getElementById("field_"+name).disabled=true;
        else document.getElementById("field_"+name).disabled=false;
        document.getElementById("field_"+name).value=v.getAttribute('VALUE');
        }
       else if(type==12) { // select_popup
        document.getElementById("field_"+name+"_value").innerText=v.getAttribute('SUBSCRIPT');
        document.getElementById("field_"+name).value=value;
        if(disabled) document.getElementById("field_"+name+"_button").disabled=true;
        else document.getElementById("field_"+name+"_button").disabled=false;
        }
       else if(type==3) { // textarea
        document.getElementById('field_'+name).innerText=value;
        if(disabled) document.getElementById("field_"+name).disabled=true;
        else document.getElementById("field_"+name).disabled=false;
        }
       else if(type==9) { // flag
        if(value) document.getElementById('field_'+name).checked=true;
        else document.getElementById('field_'+name).checked=false;
        }
       else if((type==2)||(type==1)||(type==4)||(type==14)) { // string, integer, real, password
        document.getElementById('field_'+name).value=value;
        if(disabled) document.getElementById("field_"+name).disabled=true;
        else document.getElementById("field_"+name).disabled=false;
        }
       else if(type==10) { // date
        document.getElementById('field_'+name).value=v.getAttribute('DAY')
        var obj=eval("cs"+name);
        if(v.getAttribute('MONTH')>0)
         obj.setSelectedByValue(v.getAttribute('MONTH'),true);
        else {
         obj.setUnselected();
         document.getElementById('field_'+name+'_mon').value='';
         }
        var obj=eval("ys"+name);
        if(v.getAttribute('YEAR')>0)
         obj.setSelectedByValue(v.getAttribute('YEAR'),true);
        else {
         obj.setUnselected();
         document.getElementById('field_'+name+'_year').value='';
         }
        names[els++]=name+'_mon';
        names[els++]=name+'_year';
        if(disabled) {
         document.getElementById("field_"+name).disabled=true;
         var obj=eval("cs"+name);
         obj.Enable(false);
         var obj=eval("ys"+name);
         obj.Enable(false);
         document.getElementById("calendar"+name).disabled=true;
         document.getElementById("field_"+name+"_mon").disabled=true;
         document.getElementById("field_"+name+"_year").disabled=true;
         }
        else {
         document.getElementById("field_"+name).disabled=false;
         var obj=eval("cs"+name);
         obj.Enable(true);
         var obj=eval("ys"+name);
         obj.Enable(true);
         document.getElementById("calendar"+name).disabled=false;
         document.getElementById("field_"+name+"_mon").disabled=false;
         document.getElementById("field_"+name+"_year").disabled=false;
         }
        }
       else if(type==11) { // datetime
        document.getElementById('field_'+name).value=v.getAttribute('DAY')
        var obj=eval("cs"+name);
        if(v.getAttribute('MONTH')>0)
         obj.setSelectedByValue(v.getAttribute('MONTH'),true);
        else {
         obj.setUnselected();
         document.getElementById('field_'+name+'_mon').value='';
         }
        var obj=eval("ys"+name);
        if(v.getAttribute('YEAR')>0)
         obj.setSelectedByValue(v.getAttribute('YEAR'),true);
        else {
         obj.setUnselected();
         document.getElementById('field_'+name+'_year').value='';
         }
        document.getElementById('field_'+name+'_hour').value=v.getAttribute('HOUR');
        document.getElementById('field_'+name+'_minute').value=v.getAttribute('MINUTE');
        names[els++]=name+'_mon';
        names[els++]=name+'_year';
        names[els++]=name+'_hour';
        names[els++]=name+'_minute';
        if(disabled) {
         document.getElementById("field_"+name).disabled=true;
         var obj=eval("cs"+name);
         obj.Enable(false);
         var obj=eval("ys"+name);
         obj.Enable(false);
         document.getElementById("field_"+name).disabled=true;
         document.getElementById("field_"+name+"_mon").disabled=true;
         document.getElementById("field_"+name+"_year").disabled=true;
         document.getElementById("field_"+name+"_hour").disabled=true;
         document.getElementById("field_"+name+"_minute").disabled=true;
         }
        else {
         var obj=eval("cs"+name);
         obj.Enable(true);
         var obj=eval("ys"+name);
         obj.Enable(true);
         document.getElementById("calendar"+name).disabled=false;
         document.getElementById("field_"+name).disabled=false;
         document.getElementById("field_"+name+"_mon").disabled=false;
         document.getElementById("field_"+name+"_year").disabled=false;
         document.getElementById("field_"+name+"_hour").disabled=false;
         document.getElementById("field_"+name+"_minute").disabled=false;
         }
        }
       else if(type==13) { // radio
        var elr=document.getElementsByName('field_'+name);
        var value=v.getAttribute('VALUE');
        if(elr) {
         for(var a=0;a<elr.length;a++) {
          if((elr[a].checked)&&(value!=elr[a].value))
           elr[a].checked=false;
          if(value==elr[a].value)
           elr[a].checked=true;
          }
         }
        }
       if(document.getElementById('field_'+name+'_history')) {
        if(v.getAttribute('HISTORY')=='TRUE') {
         var cl=document.getElementById('field_'+name+'_history').onclick;
         var clc=cl.toString();
         clc=clc.replace(/object_id=[^&]*/ig,'object_id='+id);
         eval("var func="+clc.replace("anonymous","onclick_"+name));
         document.getElementById('field_'+name+'_history').onclick=func;
         document.getElementById('field_'+name+'_history').style.display='';
         }
        else
         document.getElementById('field_'+name+'_history').style.display='none';
        }
       v=v.nextSibling;
       }
      }
     var el=document.getElementsByTagName("input");
     for(var a=0;a<el.length;a++) {
      if(el[a].name.substr(0,6)!='field_') continue;
      var found=false;
      for(var b=0;b<els;b++) {
       if("field_"+names[b]==el[a].name) {
        found=true;
        break;
        }
       }
      if(!found)
       document.getElementById(el[a].name).disabled=true;
      }
     }
    document.getElementById('status_field').innerText='Объект загружен';
    }
   xl.Load();
   }
 LoadFragments(id,fragments,fieldname);
 }

function LoadFragment(id,fragment,fieldname) {
 if(!fragment) return;
 var locs=document.location.toString();
 locs=locs.replace(new RegExp('&'+fieldname+'[^&]*'),'');
 var loc=locs+'&'+fieldname+'='+id+'&getfragment='+fragment;
 var parts=loc.split('?');
 var xld=new XML_Load(parts[0],"GET",parts[1],"TEXT",null);
 if(xld.IsReady()) {
  xld.OnReady=function(status,list,ldata) {
   var container=document.getElementById(fragment);
   while(container.hasChildNodes()) container.removeChild(container.lastChild);
   container.innerHTML=ldata;
   var arr=ldata.match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
   if(arr) {
    for(var a=0;a<arr.length;a++) {
     arr[a].match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
     var script=RegExp.$1;
     window.execScript(script);
     }
    }
   }
  xld.Load();
  }
 }


// -> Функции для галереи

function LoadGallery(id,fieldname){
 document.getElementById('status_field').innerText='Загрузка объекта...';
 LoadFragment(id,'GetName',fieldname);
 LoadFragment(id,'UploadImages',fieldname);
 LoadFragment(id,'BigImage',fieldname);
 LoadFragment(id,'ImagesLine',fieldname);
 document.getElementById('status_field').innerText='Объект загружен';
}

function LoadFragmentMod(id,fragment,fieldname,sel) {
 if(!fragment) return;
 var locs=document.location.toString();
 locs=locs.replace(new RegExp('&'+fieldname+'[^&]*'),'');
 locs=locs.replace(new RegExp('&'+sel+'[^&]*'),'');
 var loc=locs+'&sel='+sel+'&'+fieldname+'='+id+'&getfragment='+fragment;
 var parts=loc.split('?');
 var xld=new XML_Load(parts[0],"GET",parts[1],"TEXT",null);
 if(xld.IsReady()) {
  xld.OnReady=function(status,list,ldata) {
   var container=document.getElementById(fragment);
   while(container.hasChildNodes()) container.removeChild(container.lastChild);
   container.innerHTML=ldata;
   var arr=ldata.match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
   if(arr) {
    for(var a=0;a<arr.length;a++) {
     arr[a].match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
     var script=RegExp.$1;
     window.execScript(script);
     }
    }
   }
  xld.Load();
  }
 }

function LoadGalleryPage(page,id,fieldname) {
 var fragments=['ImagesLine','BigImage'];
 var locs=document.location.toString();
 locs=locs.replace(new RegExp('&'+fieldname+'[^&]*'),'');
 var frags='';
 for(fragment in fragments) {
  frags+=fragments[fragment]+';';
  if(document.getElementById(fragments[fragment]))
   document.getElementById(fragments[fragment]).innerHTML='';
  }
 var loc=locs+'&'+fieldname+'='+id+'&gpage='+page+'&getfragments='+frags;
 var parts=loc.split('?');
 
 p=parts[0].replace("dialogs/Galleries.php",""); // в диалог грузим код со страницы с модулем single_gallery
 if(p!=parts[0]) parts[1]+='&nonav=1'; // в модальный диалог не грузим кнопки управления
 var xld=new XML_Load(p,'GET',parts[1],'TEXT',null);
 if(xld.IsReady()) {
  xld.OnReady=function(status,list,ldata) {
   
   var data=ldata.split('---- boundary ----\n');
   for(d in data) {
    if(!data[d]) continue;
	fragment=data[d].substring(2,data[d].indexOf('}'));
    var rdata=data[d].substring(data[d].indexOf('}')+1);
    var container=document.getElementById(fragment);
    if(container) {
     while(container.hasChildNodes())
      container.removeChild(container.lastChild);
     container.innerHTML=rdata;
     var arr=rdata.match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
     if(arr) {
      for(var a=0;a<arr.length;a++) {
       arr[a].match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
       var script=RegExp.$1;
       window.execScript(script);
       }
      }
     }
    }
   }
  xld.Load();
  }
 }

// <-

function LoadFragments(id,fragments,fieldname) {
 if(!fragments) return;
 if(fragments=="") return;
 var locs=document.location.toString();
 locs=locs.replace(new RegExp('&'+fieldname+'[^&]*'),'');
 var frags="";
 for(fragment in fragments) {
  frags+=fragments[fragment]+";";
  if(fragments[fragment].substring(0,6)!="Manage")
   document.getElementById(fragments[fragment]).innerHTML='';
  }
 var loc=locs+'&'+fieldname+'='+id+'&getfragments='+frags;
 var parts=loc.split('?');
 var xld=new XML_Load(parts[0],"GET",parts[1],"TEXT",null);
 if(xld.IsReady()) {
  xld.OnReady=function(status,list,ldata) {
   var data=ldata.split("---- boundary ----\n");
   for(d in data) {
    if(!data[d]) continue;
    fragment=data[d].substring(2,data[d].indexOf("}"));
    var rdata=data[d].substring(data[d].indexOf("}")+1);
    var container=document.getElementById(fragment);
    if(container) {
     while(container.hasChildNodes())
      container.removeChild(container.lastChild);
     container.innerHTML=rdata;
     var arr=rdata.match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
     if(arr) {
      for(var a=0;a<arr.length;a++) {
       arr[a].match(/<script language=JavaScript>((.|\n)*?)<\/script>/ig);
       var script=RegExp.$1;
       window.execScript(script);
       }
      }
     }
    }
   }
  xld.Load();
  }
 }

function CollectForm(action,skipform) {
 document.getElementById('status_field').innerText='Выполнение операции...';
 var locs=document.location.toString();
 if(cleantarget) locs=locs.replace(new RegExp('&'+cleantarget+'[^&]*'),'&'+cleantarget+'='+document.getElementById('id').value);
 var res=locs+'&xsubmit=true&record_'+action+'=true&id='+document.getElementById('id').value;
 var els=document.getElementsByTagName("input");
 for(var a=0;a<els.length;a++) {
  if(els[a].disabled) continue;
//  if(els[a].style.display=='none') continue;
  if(els[a].id.substr(0,6)=='field_') {
   if(els[a].type=='radio') {
    if(els[a].checked) {
     name=els[a].id.substr(6);
     value=els[a].value;
     value=urlencode(value);
     res+='&field_'+name+'='+value;
     }
    }
   else if(els[a].type=='checkbox') {
    if(els[a].checked) {
     name=els[a].id.substr(6);
     res+='&field_'+name+'=on';
     }
    }
   else {
    name=els[a].id.substr(6);
    value=els[a].value;
    value=urlencode(value);
    res+='&field_'+name+'='+value;
    }
   }
  }
 els=document.getElementsByTagName("textarea");
 for(var a=0;a<els.length;a++) {
  if(els[a].disabled) continue;
  if(els[a].style.display=='none') continue;
  if(els[a].name.substr(0,6)=='field_') {
   name=els[a].name.substr(6);
   value=els[a].innerText;
   res+='&field_'+name+'='+urlencode(value);
   }
  }
 var pos=res.indexOf("&");
 var parts=new Array(2);
 parts[0]=res.substr(0,pos);
 parts[1]=res.substr(pos+1);
 var xln=new XML_Load(parts[0],"POST",parts[1],"XML",null);
 if(xln.IsReady()) {
  xln.OnReady=function(status,list,ldata) {
  var v=XML_FindSubRootSection(ldata,"RESULT");
   if(v!=null) {
    var paramname;
    if(document.location.toString().match(/nav=([^&]*)/i)) {
     if(RegExp.$1>1)
      paramname='idc';
     }
    if(document.location.toString().match(/bookmark=([^&]*)/i)) {
     if(RegExp.$1>1)
      paramname='idc';
     }
    if(!paramname) {
     if(document.location.toString().match(/(id[^=]+)=([^&]*)/i)) {
      if(RegExp.$1)
       paramname=RegExp.$1;
      }
     }
    if(!paramname) paramname='idi';
    var src=v.getAttribute("STATUS")>0?"/img/status_ok.gif":"/img/status_bad.gif";
    var msg=v.getAttribute("MESSAGE");
    document.getElementById('status_img').src=src;
    document.getElementById('status_field').innerText=msg;
    if(v.getAttribute("STATUS")==0) return;
    if(action=='create') document.getElementById('id').value=v.getAttribute("NEWRECORD");
    if(action=='delete') {
     LoadTable(0,paramname,skipform);
     refreshList(document.getElementById('id').value,true);
     }
    else if(action=='create') {
     LoadTable(v.getAttribute("NEWRECORD"),paramname,skipform);
     refreshList(v.getAttribute("NEWRECORD"),true);
     }
    else {
     LoadTable(document.getElementById('id').value,paramname,skipform);
     refreshList(document.getElementById('id').value);
     }
    }
   else {
    document.getElementById('status_img').src="/img/status_bad.gif";
    document.getElementById('status_field').innerText="Неверный ответ сервера";
    }
   }
  xln.Load();
  }
 }

var isMozilla=document.all ? false : true;

function ClearContainer(c) {
 while (c.hasChildNodes()) c.removeChild(c.lastChild);
}
function FormatNumericString(num,numrank) {
 var rank="0000000000000000";
 var str=""+num;
 numrank=numrank-str.length;
 if (numrank<=0) return str;
 return rank.substr(0,numrank)+str;
}

function GetCurrentUTS() {
 var CurDate  = new Date();
 return Math.floor(CurDate.getTime()/1000)-CurDate.getTimezoneOffset()*60;
}

function getDayOfWeek(year,month,day) {
 var a=Math.floor((14-month)/12);
 var y=year-a;
 var m=month+12*a-2;
 var d=(day+y+Math.floor(y/4)-Math.floor(y/100)+Math.floor(y/400)+Math.floor((31*m)/12))%7;
    //d=0-6 Su,Mo...
 if (d==0) d=6; else d--; //Mo,Tu
 return d;
}

function cords() {
}

cords.get=function(o) {
 var crdX=o.offsetLeft;
 var crdY=o.offsetTop;
 while ((o=o.offsetParent)!=null) {
        crdX+=o.offsetLeft;
        crdY+=o.offsetTop;
 }
 
 return [crdX,crdY];
}

cords.getX=function(o) {
 var crdX=o.offsetLeft;
 while ((o=o.offsetParent)!=null) crdX+=o.offsetLeft+o.clientLeft;
 return crdX;
}

cords.getY=function(o) {
 var crdY=o.offsetTop;
 while ((o=o.offsetParent)!=null) crdY+=o.offsetTop+o.clientTop;
 return crdY;
}

function ClearContainer(c) {
 while (c.hasChildNodes()) c.removeChild(c.lastChild);
}
function FormatNumericString(num,numrank) {
 var rank="0000000000000000";
 var str=""+num;
 numrank=numrank-str.length;
 if (numrank<=0) return str;
 return rank.substr(0,numrank)+str;
}

function GetUTS(year,month,day,hrs,mins,secs) {
 year=parseInt(year,10);   if (isNaN(year)) return 0;
 month=parseInt(month,10); if (isNaN(month)) return 0;
 day=parseInt(day,10);     if (isNaN(day)) return 0;
 hrs=parseInt(hrs,10);     if (isNaN(hrs)) return 0;
 mins=parseInt(mins,10);   if (isNaN(mins)) return 0;
 secs=parseInt(secs,10);   if (isNaN(secs)) return 0;

 var secINday=24*60*60;
 var i,ut=0;

 for (var i=1970;i<year;i++) {
      ut+=365*secINday;
      if ((i%400)==0) ut+=secINday;
      if ((i%4)==0 && (i%100)!=0) ut+=secINday;     
 }

 var days=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
 if ((year%400)==0) days[1]++;
 if ((year%4)==0 && (year%100)!=0) days[1]++;

 for (i=0;i<month-1;i++) ut+=days[i]*secINday;

 ut+=(day-1)*secINday;

 ut+=hrs*60*60+mins*60+secs;

 return ut;
}

function GetJulian(uts) {
 uts=parseInt(uts,10); if (isNaN(uts)) { var rt=new Array(); rt["year"]=1970; rt["month"]=1; rt["day"]=1; rt["hrs"]=0; rt["mins"]=0; rt["secs"]=0; return rt;}

 var year,month,day,hrs,mins,secs;
 var secINday=24*60*60;
 var ut=0;
 var t=0;

 year=1970;
 i=year;

 while (true) {
  t=365*secINday;
  if ((i%400)==0) t+=secINday;
  if ((i%4)==0 && (i%100)!=0) t+=secINday;     
  if ((ut+t)>uts) break;
  ut+=t;
  year++;
  i++;
 }

 var days=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
 if ((year%400)==0) days[1]++;
 if ((year%4)==0 && (year%100)!=0) days[1]++;

 month=1;
 i=0;
 while (i<12) {
  t=days[i]*secINday;
  if ((ut+t)>uts) break;
  ut+=t;
  month++;
  i++;
 }

 day=1;
 i=0;
 t=days[month-1];
 while (i<t) {
      if ((ut+secINday)>uts) break;
      ut+=secINday;
      day++;
      i++;
 }

 i=uts-ut;    
 hrs=Math.floor(i/3600);
 if (hrs==24) hrs=0;
 i=i%3600;
 mins=Math.floor(i/60);
 secs=i%60;

 var rt=new Array();
 rt["year"]=year;
 rt["month"]=month;
 rt["day"]=day;
 rt["hrs"]=hrs;
 rt["mins"]=mins;
 rt["secs"]=secs;

 return rt;
}

function NumberToNumber(num) {
 var ns=""+num,nns,s,first;
 var i,len;
 if (ns=="") return false;
 first=true;

 len=ns.length;
 for (i=len-1;i>=0 && ns.charAt(i)==" ";i--) len--;

 i=0;
 for (i=0;i<ns.length && ns.charAt(i)==" ";i++) {} //Skip spaces before

 if (ns.charAt(i)=="-") {
     i++;
     for (i;i<ns.length && ns.charAt(i)==" ";i++) {} //Skip spaces after
     nns="-";
 } else nns="";

 for (i;i<len;i++) {
      s=ns.charAt(i);
      if ((s>='0' && s<='9') || s=='.') {
          if (first && s=='0') continue;
          nns+=s;
          first=false;
      } else return false;
 }
 return eval(nns);
}



function FCrEl(parent,tagName,param,style,text) {
 //parent - parent of element, can be NULL
 //param  - "border=1; cellspacing=3; class=my"
 //style  - "border: solid 1px #000000; backgroundColor: #FF0000;"
 tagName=tagName.toLowerCase();
 var el;
 if (tagName=="text") el=document.createTextNode(param);
     else {
           el=document.createElement(tagName);
           var result;
           //Add Attributes
           FCrEl.rep.lastIndex=0;
           while ((result=FCrEl.rep.exec(param))!=null) {
                  var attr=document.createAttribute(result[1]);
                  attr.value=result[2];
                  el.setAttributeNode(attr);
           }

           //Add Style
           FCrEl.res.lastIndex=0;
           while ((result=FCrEl.res.exec(style))!=null) el.style[result[1]]=result[2];
          }

 if (text) el.appendChild(document.createTextNode(text));
 if (parent!=null) parent.appendChild(el);
 return el;
}

FCrEl.rep=new RegExp();
FCrEl.rep.compile(" *(.*?) *= *(.*?) *(;|$)","g");

FCrEl.res=new RegExp();
FCrEl.res.compile(" *(.*?) *: *(.*?) *(;|$)","g");



function CrEl(parent,tagName,param,style) {
 //parent - parent of element, can be NULL
 //param  - "border=1; cellspacing=3; class=my"
 //style  - "border: solid 1px #000000; backgroundColor: #FF0000;"
 tagName=tagName.toLowerCase();
 var el;
 if (tagName=="text") el=document.createTextNode(param);
     else {
           el=document.createElement(tagName);
           var i,j,attr,l;

           //Add Attributes
           if (param && param!="") {
               i=0;j=0;l=param.length;
               while (i<l) {              
                      j=param.indexOf("=",i);
                      key=param.substring(i,j).toLowerCase();
                      i=j+1;
                      j=param.indexOf(";",i);
                      val=param.substring(i,j);
                      i=j+1;
                      i++; //skip next space              

                      attr=document.createAttribute(key);
                      attr.value=val;
                      el.setAttributeNode(attr);
               }
           }

           //Add Style
           if (style && style!="") {
               i=0;j=0;l=style.length;
               while (i<l) {              
                      j=style.indexOf(":",i);
                      key=style.substring(i,j).toLowerCase();
                      i=j+1;
                      j=style.indexOf(";",i);
                      val=style.substring(i,j);
                      i=j+1;
                      i++; //skip next space       
                      eval("el.style."+key+"="+val);
               }
           }

          }
 if (parent!=null) parent.appendChild(el);
 return el;
}

function ContainObject(where,what) {
 var child;

 if (where==what) return true;

 for (child=where.firstChild; child != null; child=child.nextSibling) {
      if (ContainObject(child,what)) return true;
 }

 return false;
}

function ObjectProp(o) {                         
var txt;
txt="";
for (i in o) {
 if(o[i]=="") continue;
 if(o[i]==null) continue;
 if (i!="innerHTML" && i!="outerHTML" && i!="innerText" && i!="outerText") txt+=i+"="+o[i]+"    "; 
}
alert(txt);
}

   function InsertChild(before,Child,newChild) {
    if (before) Child.parentNode.insertBefore(newChild,Child);
        else Child.parentNode.insertBefore(newChild,Child.nextSibling);
   }

   function XML_FindSubRootSection(XML_RootO,sec_TagName) {
    if (!XML_RootO) return null;
    var xml_co=XML_RootO.firstChild;
    while (xml_co) {
     if (xml_co.tagName==sec_TagName) return xml_co;
     xml_co=xml_co.nextSibling;
    }
    return null;
   }

   function InsertChild(before,Child,newChild) {
    if (before) Child.parentNode.insertBefore(newChild,Child);
        else Child.parentNode.insertBefore(newChild,Child.nextSibling);
   }

   function XML_FindSubRootSection(XML_RootO,sec_TagName) {
    if (!XML_RootO) return null;
    var xml_co=XML_RootO.firstChild;
    while (xml_co) {
     if (xml_co.tagName==sec_TagName) return xml_co;
     xml_co=xml_co.nextSibling;
    }
    return null;
   }

function urlencode(v) {
 var a,b,res="",found,alpha="АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя",digits="ABCDEF";
 for(a=0;a<v.length;a++) {
  found=false;
  var c=v.charAt(a);
  if(c==" ")
   res+="+";
  else if(c=="+")
   res+="%2B";
  else if(c=="ё")
   res+="%B8";
  else if(c=="№")
   res+="%B9";
  else if(c=="«")
   res+="%AB";
  else if(c=="»")
   res+="%BB";
  else {
   for(b=0;b<alpha.length;b++) {
    if(c==alpha.charAt(b)) {
     found=true;
     break;
     }
    }
   if(found) {
    var num=b+192;
    var c1=num/16;
    var c2=num%16;
    c1=(c1>=10?digits.charAt(c1-10):c1);
    c2=(c2>=10?digits.charAt(c2-10):c2);
    res+='%'+c1.toString()+c2.toString();
    }
   else
    res+=c;
   }
  }
 return res;
 }

