// xGetElementById, Copyright 2001-2005 Michael Foster (Cross-Browser.com)
// Part of X, a Cross-Browser Javascript Library, Distributed under the terms of the GNU LGPL

function xGetElementById(e)
{
  if(typeof(e)!='string') return e;
  if(document.getElementById) e=document.getElementById(e);
  else if(document.all) e=document.all[e];
  else e=null;
  return e;
}

function trim(s0)
{
  var re,s;
  re = /^ +/;              
  s = s0.replace(re, ""); 
  re = / +$/;              
  s = s.replace(re, ""); 
  return s;
}


function notNumeric(v)
{
	if(trim(v)=="") return true;	
	if(v.search(/[^0-9]/)<0) return true;	
	return false;	
}


function menuctrl(_name,_state)
{
	if (navigator.appName!='Netscape') 
	{
	  document.all[_name].style.visibility=_state;
	}
	else 
	{
		if (parseInt(navigator.appVersion) < 5) return;
		document.getElementById(_name).style.visibility=_state;
	}
}

function SetP(_name,_text)
{
//	window.alert(_name+" "+_text);
	document.all[_name].innerText=_text;
}


function SetInp(_name,_text,_valid,withP)
{
	if (navigator.appName!='Netscape') 
	{
	  document.all[_name].value=_text;
	  document.all[_name].valid=_valid;
	}
	else 
	{
		if (parseInt(navigator.appVersion) < 5) return;
			document.getElementById(_name).value=_text;
			document.getElementById(_name).valid=_valid;
	}
	if(withP) {
		SetP("c"+_name,_text);
	}
}

function proclist(j,id)
{
  var i,l,s;
	var re = new RegExp(id,"ig");
	s="0;0;Все#";
	l=ldata0[j].split("#");

	for(i=0;i<l.length;i++)
	{
		if(l[i].search(re)>0)
			s+=l[i]+"#";	
	}
	ldata[j]=s;
}

function puttexthid(_name,_text,_valid)
{
  var n=_name.substr(1,_name.length-1);
	SetInp(_name,_text,_valid,false);
	document.HiddenForm.elements(n).value=_valid;
}

function puttext(_name,_text,_valid,withP)
{
	var i,j,re,id,a;
  var subpart,part;
  var recurs=0;
//  window.alert(arguments.length);
	if(arguments.length>=5)
	{
		recurs=1;
	}

	SetInp(_name,_text,_valid,withP);

  for(i=0;i<lp.length-1;i++)
  {
  	if(lp[i]==_name) break;
  }
  if(i>3) return;


  switch (i){
//  	case 3: //автор
//			s="0;0;Все#3295;2873;Африка#";
//      ldata[0]=s;
//			if(recurs==0)
//				proclist(1,_valid);  			

//  		break;
  	case 0: //раздел
  		if(_valid==0 && recurs==0)
  		{
  			ldata[1]=ldata0[1];
  			ldata[2]=ldata0[2];
  		}else
  		{
				if(recurs==0)
					proclist(1,_valid);  			
//				re =/#([0-9]+);/g;
//				a = ldata[1].match(re);
//				if(a!=null)
//				{
//					s=a.join("|");
//					s=s.replace(/#|;/g,"");
//			  	ldata[2]=ldata0[2];
//			  	proclist(2,s);	
//			  } else ldata[2]="0;0;Все#";

  		}
			if(recurs==0)
	      puttext("subpart","Все",0,withP);
//      SetInp("subpart","Все",0,withP);
      //SetInp("session","Все",0,withP);
  		break;
  	case 1:
  		if(_valid==0 && recurs==0)
  		{
				re = /([0-9]+);[0-9]+;/ig;
				a = ldata[1].match(re);
				s=a.join("|");
		  	proclist(2,s);	
  		}else
  		{
				if(recurs==0)
{
//	  window.alert(ldata[2]);
					proclist(2,_valid);  			
//	  window.alert(ldata[2]);
}
	      re="#"+_valid+";([0-9]+);"
				a=ldata[1].match(re);
	      re="#"+a[1]+";([0-9]+);([^#.]+)#"
				a=ldata[0].match(re);
//        SetInp("part",a[2],a[1],withP);
	      puttext("part",a[2],a[1],withP,1);
  		}
			if(recurs==0)
	      SetInp("session","Все",0,withP);
  		break;
  	case 2:

      re="#"+_valid+";([0-9]+);"
			a=ldata[2].match(re);     //папа
      subpart=a[1];
      re="#"+subpart+";([0-9]+);([^#.]+)#" 
			a=ldata[1].match(re);             //дедушка

			proclist(2,subpart);  			
      puttext("subpart",a[2],subpart,withP,1)

//      SetInp("subpart",a[2],subpart,withP);
//      part=a[1];
//      re="#"+part+";[0-9]+;([^#.]+)#" 
//			a=ldata[0].match(re);             //дедушка
//      SetInp("part",a[1],part,withP);

//			proclist(1,part);  			
//			proclist(2,subpart);  			
  		break;
  }
//  window.alert(ldata[2]);
}

function list(inputID,_str)
{
  val = new Array();
  l = new Array();
	l = _str.split('#');

	if (navigator.appName!='Netscape') 
	{
	  selDiv=document.all['tblSelect'];
	  inDiv=document.all[inputID];
	  listDiv=document.all['list'+inputID];
	}
	else 
	{
	  if (parseInt(navigator.appVersion) < 5) return;
	  selDiv=document.getElementById('tblSelect');
	  inDiv=document.getElementById(inputID);
	  listDiv=document.getElementById('list'+inputID);
	}

	if (listDiv.style.visibility=="visible")
	  listDiv.style.visibility="hidden";
	else                      
	{
	  s="<table><tr>\n";  
		for(i=0;i<l.length-1;i++)
	  {
		  val=l[i].split(';');
		  if(inputID.substr(0,1)=='_') //hidden
			  s+="<td width=\"25%\"><a href='javascript:puttexthid(\""+inputID+"\",\""+val[2]+"\",\""+val[0]+"\")'>"+val[2]+"</a></td>\n";
			else
			  s+="<td width=\"25%\"><a href='javascript:puttext(\""+inputID+"\",\""+val[2]+"\",\""+val[0]+"\",false)'>"+val[2]+"</a></td>\n";
					  
		  if((i+1) % 4 == 0) s+="</tr>\n<tr>\n";
    }
	  s+="</tr>\n</table>";
	  selStr=selDiv.innerHTML;
	  count=0;
	  index=selStr.indexOf('<TR>');
	  while(index != -1)
	  {
	  	count++;
	  	selStr=selStr.substr(index+1);
	  	index=selStr.indexOf('<TR>');
	  }
	  if (count==0) minuspart=-8;
	  else minuspart=0;
	  listDiv.innerHTML=s;
	  listDiv.style.width="auto";
	  listDiv.style.visibility="visible";
	}  
}

function GetInpAttr(name,attr)//?????
{
	if (navigator.appName!='Netscape') 
	{
//	  _id=document.all[name].valid;
	  _id=document.all[name].attributes[attr];
	}
	else 
	{
		if (parseInt(navigator.appVersion) < 5) return;
		_id=document.getElementById(name).valid;
	}
	return _id;
}


function puttext1(_name,_text,_valid,withP)
{
	var i,j,re,id,a;
  var subpart,part;

	SetInp(_name,_text,_valid,withP);

  for(i=0;i<lp.length-1;i++)
  {
  	if(lp[i]==_name) break;
  }
  if(i>2) return;

  switch (i){
  	case 0: //раздел
  		if(_valid==0)
  		{
  			ldata[1]=ldata0[1];ldata[2]=ldata0[2];
  		}else
  		{
				proclist(1,_valid);  			
				re =/#([0-9]+);/g;
				a = ldata[1].match(re);
				if(a!=null)
				{
					s=a.join("|");
					s=s.replace(/#|;/g,"");
			  	ldata[2]=ldata0[2];
			  	proclist(2,s);	
			  } else ldata[2]="0;0;Все#";

  		}
      SetInp("subpart","Все",0,withP);SetInp("session","Все",0,withP);
  		break;
  	case 1:
  		if(_valid==0)
  		{
				re = /([0-9]+);[0-9]+;/ig;
				a = ldata[1].match(re);
				s=a.join("|");
		  	proclist(2,s);	
  		}else
  		{
				proclist(2,_valid);  			

	      re="#"+_valid+";([0-9]+);"
				a=ldata[1].match(re);
	      re="#"+a[1]+";([0-9]+);([^#.]+)#"
				a=ldata[0].match(re);
        SetInp("part",a[2],a[1],withP);
  		}
      SetInp("session","Все",0,withP);
  		break;
  	case 2:

      re="#"+_valid+";([0-9]+);"
			a=ldata[2].match(re);     //папа
      subpart=a[1];
      re="#"+subpart+";([0-9]+);([^#.]+)#" 
			a=ldata[1].match(re);             //дедушка
      SetInp("subpart",a[2],subpart,withP);
      part=a[1];
      re="#"+part+";[0-9]+;([^#.]+)#" 
			a=ldata[0].match(re);             //дедушка
      SetInp("part",a[1],part,withP);

			proclist(2,subpart);  			
			proclist(1,part);  			
  		break;
  }
}

