if( typeof D == 'undefined' ){	var D = {};}function FriendList( par ){		if( par && typeof par == 'object' ){		this.par = par;	} else {		this.par = {};	}	this.groups = par.groups || false;	this.sex = par.sex || false;	this.age = par.age || false;	if( ! FriendList.rpc ){		FriendList.rpc = new RPC( '/rq/app.php' );	}	this.onlyOnline = par.onlyOnline || false;	this.rpc = FriendList.rpc;	this.checkboxs = {};	this._ = {};	this._.cache = {};		this._.node = mkE( {		tag:'div',		className:'FriendList',		els:[			mkE( {				tag:'div',				className:'bg'			} ),			mkE( {				tag:'div',				className:'letters',				els:[					mkE( {						tag:'table',						prop:{							cellspacing:'0'						},						els:[							mkE( {								tag:'tbody',								els:[									this._.letters = mkE( {										tag:'tr'									} )								]							} )						]					} )				]			} ),			this._.list = mkE( {				tag:'div',				className:'list',				els:[					mkE( {						tag:'div',						className:'startText',						text:par.startText || xGlobal[ 'FriendList startText' ] || 'Choose friend by first latter of name or last name'					} )				]			} )		]	} );	this._.letEls = {};	for( var i = 65; i <= 90; i ++ ){		this._.letEls[ String.fromCharCode( i ) ] = mkE( {			tag:'td',			text:String.fromCharCode( i ),			prop:{				FriendListLetter:String.fromCharCode( i ),				FriendList:this,				onclick:FriendList.letterOnclick			}		} ).append( this._.letters );	}	for( var i = 0; i <= 9; i ++ ){		this._.letEls[ String( i ) ] = mkE( {			tag:'td',			text:String( i ),			prop:{				FriendListLetter:String( i ),				FriendList:this,				onclick:FriendList.letterOnclick			}		} ).append( this._.letters );	}};FriendList.prototype.append = function( el ){	if( typeof el == 'string' ){		document.getElementById( el ).appendChild( this._.node );		return this;	}	el.appendChild( this._.node );	return this;};FriendList.prototype.clear = function(){	if( this.checkboxs ){		for( var k in this.checkboxs ){			this.checkboxs[ k ].checked = false;		}	}};FriendList.prototype.value = function( id, v ){	if( this.checkboxs && this.checkboxs[ id ] ){		this.checkboxs[ id ].checked = ( v ? true : false );	}};FriendList.prototype.setList = function( list ){	}; // lai būtu datu iegūšana kā multi_acFriendList.letterOnclick = function(){	for( var k in this.FriendList._.letEls ){		removeClassName( this.FriendList._.letEls[ k ], 'selected' );	}	addClassName( this, 'selected' );	clearNode( this.FriendList._.list );	var node = mkE( {		tag:'div'	} ).append( this.FriendList._.list );	node.FriendList = this.FriendList;	node.FriendListLetter = this.FriendListLetter;	addClassName( this.FriendList._.list, 'load' );	var cache = this.FriendList._.cache[ this.FriendListLetter ];	if( cache ){		FriendList.re_searchFriends( cache, node );		return;	}	FriendList.rpc.send(		FriendList.letterOnclick.method,		{			v:this.FriendListLetter,			l:50,			groups:this.FriendList.groups || false,			sex:this.FriendList.sex || false,			age:this.FriendList.age || false			//withoutNick:true,					},		FriendList.re_searchFriends,		node	);};FriendList.letterOnclick.method = 'searchFriends';FriendList.re_searchFriends = function( re, par ){	if( ! par.parentNode ){		return;	}	par.FriendList._.cache[ par.FriendListLetter ] = re; 	removeClassName( par.FriendList._.list, 'load' );	var tbody, tr, i = 0;	mkE( {		tag:'table',		prop:{			cellspacing:'0'		},		els:[			tbody = mkE( {				tag:'tbody'			} )		]	} ).append( par );	var value = [], checked, row;	if( par.FriendList.par && par.FriendList.par.multiAc  ){		value = par.FriendList.par.multiAc.value();	}	var width = Math.round( ( par.FriendList._.list.offsetWidth - 100 ) / 2 ) + 'px';	par.FriendList.checkboxs = {};	for( var k in re.gr ){		row = {};		O2O( row, re.gr[ k ] );		row.i = 'gr' + row.i;		var checked = ( array_search( row.i, value, false ) !== false );		if( i % 2 == 0 ){			tr = mkE( {				tag:'tr'			} ).append( tbody );		}		 		i ++;				mkE( {			tag:'td',			className:'col1',			els:[				par.FriendList.checkboxs[ row.i ] = mkE( {					tag:'input',					prop:{						type:'checkbox',						checked:checked,						defaultChecked:checked,						FrRow:row,						FriendList:par.FriendList,						onclick:FriendList.checkboxOnclick					}				} )			]		} ).append( tr );		if(  ! ( ! par.FriendList.onlyOnline || row.o ) || row.d ){			par.FriendList.checkboxs[ row.i ].disabled = true;		}		var div;		mkE( {			tag:'td',			els:[				div = mkE( {					tag:'div',					text:row.n,					className:'FriendListItemGroup',					prop:{						style:{							width:width 						}					}				} )			]							} ).append( tr );	}	for( var k in re.fr ){		row = re.fr[ k ];		var checked = ( array_search( row.i, value, false ) !== false );		if( i % 2 == 0 ){			tr = mkE( {				tag:'tr'			} ).append( tbody );		}		i ++;		mkE( {			tag:'td',			className:'col1',			els:[				par.FriendList.checkboxs[ row.i ] = mkE( {					tag:'input',					prop:{						type:'checkbox',						checked:checked,						defaultChecked:checked,						FrRow:row,						FriendList:par.FriendList,						onclick:FriendList.checkboxOnclick					}				} )			]		} ).append( tr );		if(  ! ( ! par.FriendList.onlyOnline || row.o ) || row.d ){			par.FriendList.checkboxs[ row.i ].disabled = true;		}		var div;		mkE( {			tag:'td',			els:[				div = mkE( {					tag:'div',					text:row.n,					prop:{						style:{							width:width 						}					}				} )			]							} ).append( tr );		if( row.o ){			addClassName( div, 'online' + row.o + 'Icon' );		}		if( row.d ){			addClassName( div, 'FriendListItemDisabled' );		}	}};FriendList.checkboxOnclick = function(){	if( this.FriendList.onchange ){		this.FriendList.onchange();	}	if( ! this.FriendList.par || ! this.FriendList.par.multiAc ){		return;	}	if( this.checked ){		var addValue = this.FriendList.par.multiAc.addValue( {			caption:this.FrRow.n,			value:this.FrRow.i		} );		if( ! addValue ){			this.checked = false;		}	} else { 		this.FriendList.par.multiAc.removeValue( false, this.FrRow.i );	}};D.FriendList = FriendList;