function editPriv(o,msk,val) {
	var dlg=$('dlg_vis');
	o.vismsk = msk;
	o.visval = val;
	dlg.visibilityTarget=o;
	
	var p=getAbsolutePosition(o);
	dlg.style.top=(p.y-10) + 'px';
	dlg.style.left=(20+p.x) + 'px';
	//if (msk < 8) {
	var as=$$(dlg,'a');
	for(var i=0;i<as.length;i++) {
		var visMallowed=as[i].className.replace(/[^0-9]/,'').toint();
		if (!visMallowed) {
			continue;
		}
		if (val & visMallowed) {
			as[i].className = 'v'+visMallowed+' active';
		} else {
			as[i].className = 'v'+visMallowed;
		}
		if (msk && !(visMallowed & msk)) {
			as[i].style.display='none';
		} else {
			as[i].style.display='block';	
		}
	}
	
	if (!(msk & 2)) {
		$('vis_grps').style.display='none';
	}
	dlg.style.display='block';
	//}
	return false;
}
function setVis(o) {
	var as=$$(o.parentNode,'a');
	var target = o.parentNode.parentNode.visibilityTarget;
	var isActive = (o.className.search(/active/g) >0);
	var oVal = o.className.replace(/[^0-9]/,'').toint();
	if (oVal <= 4) {
		target.visval = oVal;
	} else {
		target.visval &= 56; // ???000
		target.visval ^= oVal; 
	}
	if (target.visval == 0) {
		target.visval = 2;
	}
	for(var i=0;i<as.length;i++) {
		var a = as[i];
		var cls = as[i].className;
		var iCls = cls.replace(/[^0-9]/,'').toint();
		if(!iCls) {
			continue;
		}
		as[i].className = 'v'+iCls;
		if (iCls & target.visval) {
			as[i].className += ' active';
		}
	}
	return false;
}
function unloadVisDlg(){
	var dlg=$('dlg_vis');
	if (dlg.style.display == 'none') {
		return false;
	}
	var target=dlg.visibilityTarget;
	var ret = 0;
	var as=$$(dlg,'a');
	for(var i=0;i<as.length;i++) {
		if (as[i].className.search(/active/) > 0) {
			ret += as[i].className.replace(/[^0-9]/g,'').toint();
		}
		as[i].className=as[i].className.replace(/ active$/,'').trim();
	}
	var cls;
	switch(ret) {
		case 1: case 2: case 4: cls = ret; break;
		default: cls = 2; break;
	}
	if (target) {
		var img=$$0(target,'img');
		img.src=img.src.replace(/[0-9].png$/,cls+'.png');
		img.className = ret;
		target.visval = ret;
		target.onclick=function(){return editPriv(this,target.vismsk,target.visval)}
	}

	dlg.style.display='none';
	return false;
}
function getVisFrom(o) {
	var img=$$0(o,'img');
	var v=img.className.replace(/[^0-9]/g,'').toint();
	if(o.visval) {
		v=o.visval;
	}
	switch(v) {
		case 1: case 2:  case 4: 
		case 8: case 16: case 32:return v; break;
		default: return ((v & 8) || (v & 16) || (v & 32)) ? v : 1;
	}
}
function visbilityWdgt(val,msk) {
	if (!msk) {msk=63;}
	if (!val) {val=2;}
	var a=$('tmpl_vis').cloneNode(true);
	a.id='';
	a.className='visibility v'+msk;
	
	var imgVal;
	switch(val) {
		case 1: case 2:  case 4: imgVal=val; break;
		default: imgVal=2;
	}


	var img=$$0(a,'img');
	img.src=img.src.replace(/0.png$/,imgVal+'.png');
	img.className= val;
	
	a.onclick=function(){return editPriv(this,msk,val)}	
	return a;
}

