function popManagerClass(){
	var c1=jml.obj;
	var c2=jml.events;
	var member={};
	var host=null;
	var autoClose=true;
	var intl=null;
	function runMember(){ for(var i in member) host.open(member[i],i);}
	function closeMember(){
		for(var i in member) host.close(i);
	}
	function initPosition(s){
		clearInterval(intl);
		intl=setInterval(function(){
			var x=getObj(s);
			var o=member[s];
			var n=getObj('maskContainer').scrollTop;
			c1.set(x,'left',(c1.get(o,'offsetLeft')+c1.get(o,'offsetWidth')-20)+'px');
			c1.set(x,'top',(c1.get(o,'offsetTop')+c1.get(o,'offsetHeight')-20-n)+'px');
		},10);
	}
	return {
		$:function(){
			host=this;
			return this;
		},
		open:function(o,s){
			if(!isset(o)||!isset(s)) return;
			var x=getObj(s);			
			if(!isset(x)) return;
			if(autoClose) closeMember();
			var n=getObj('maskContainer').scrollTop;
			c1.set(x,'left',(c1.get(o,'offsetLeft')+c1.get(o,'offsetWidth')-20)+'px');
			c1.set(x,'top',(c1.get(o,'offsetTop')+c1.get(o,'offsetHeight')-20-n)+'px');
			c1.set(x,'display','block');
			member[s]=o;
			initPosition(s);
		},
		close:function(s){
			clearInterval(intl);
			if(!isset(s)) return;
			var x=getObj(s);			
			if(!isset(x)) return;			
			c1.set(x,'display','none');
			delete member[s];
		}		
	}.$();
}
function displayImageClass(){
	var c1 = jml.obj;
	var c2 = jml.browser;
	var c3 = jml.xml.node;
	var c4 = jml.events;
	
	var s1='underImageViewer';
	var s2='imageViewer';
	
	function setPosition(){
		var o1=c2.getWindowSize();
		var n1=c1.get(s2,'offsetWidth');
		var n2=c1.get(s2,'offsetHeight');
		var n3=o1.w;
		var n4=o1.h;
		c1.set(s2,'left',((n3/2)-(n1/2))+'px');
		c1.set(s2,'top',((n4/2)-(n2/2))+'px');
	}

	return {
		$:function(){return this;},
		open:function(s){
			var o1=getObj(s1);
			var o2=getObj(s2);
			if(o1==null || o2==null) return;

			var o3=c2.getWindowSize();
			var o4=c2.getBodySize();
			var n1=Math.max(o3.w,o4.w);
			var n2=Math.max(o3.h,o4.h);

			c1.set(s1,'width',n1+'px');
			c1.set(s1,'height',n2+'px');
			c1.set(s1,'display','block');
			c1.set(s1,'alpha','85');
			
			var x1=c3.byPath('1.0',o2);
			var x2=c3.byPath('1.1',o2);
			var x3=c3.byPath('0',o2);

			c4.add(s1,'click',this.close);			
			c4.add(x3,'click',this.close);
			
			c1.set(s2,'display','block');
			c1.set(x1,'display','block');
			c1.set(x2,'display','none');
			
			c1.set(s2,'width',c1.get(x1,'offsetWidth')+'px');			
			setPosition();
			
			c4.add(x2,'load',function(){
				c1.set(x1,'display','none');
				c1.set(x2,'display','block');
				c1.set(s2,'width',c1.get(x2,'offsetWidth')+'px');
				setPosition();
			});
			
			c1.set(x2,'src',s);
			c4.add(window,'resize',setPosition);
		},
		close:function(){
			c1.set(s1,'display','none');
			c1.set(s2,'display','none');
			c4.remove(window,'resize',setPosition);
		}
	}.$();
}
function displayThumbClass(){

	var c1=jml.obj;
	var c2=jml.xml.node;
	var c3=jml.events;
	var c4=jml.jme;
	var c5=jml.images;
	
	var id=null;
	var container=null;
	var host=null;
	var member=[];
	
	var jmeObj=[new c4.motion(),new c4.motion(),new c4.motion(),new c4.motion()];
	var visible=false;
	var item={current:null,past:null};
	
	function init(){
		if(!isset(id)) return;
		container=getObj(id);
		if(!isset(container)) return;
		setAction();
	}
	function setAction(){
		var x1=c2.byPath('0.0.0',container);
		var n1=c2.length(x1);
		for(var i=0;i<n1;i++){
			var x2=c2.byPosition(i,x1);
			var x3=c2.byPosition(0,x2);
			c3.add(x3,'mouseover',delegate(null,animate,x3,true));
			c3.add(x3,'mouseout',delegate(null,animate,x3,false));
			member.push(x3);
		}
	}
	function place(){
		if(!isset(host.setAnchorId)) return;
		var o=getObj(host.setAnchorId);
		var n1=c1.get(o,'offsetLeft');
		var n2=c1.get(o,'offsetTop');
		n2=n2+host.falseHeight-host.height;
		c1.set(id,'left',n1+'px');
		c1.set(id,'top',n2+'px');
		if(!visible){
			c1.set(id,'display','block');
			visible=true;
		}
	}
	function animate(e,o,b){
		var o2=host.size;
		var n2=b?o2.end.width:o2.start.width;
		var n3=host.size.max-10-n2;
		var n4=member.length;
		
		jmeObj[0].stop();
		
		for(var i=0;i<n4;i++){
			var o1=member[i];
			var n5=Math.floor((n3-o2.space)/(n4-1));
			var n6=c1.get(o1,'width');
			var myJme=jmeObj[i];
			jmeObj[i].start({target:o,property:'width',start:n6,end:n2,duration:30,equation:'noEase',id:i});
			if(o1!==o) jmeObj[i].start({target:o1,property:'width',start:n6,end:n5,duration:30,equation:'noEase',id:i});
		}
		if(isset(item.current)) item.past=item.current;
		item.current=o;
	}
	return {
		$:function(){
			host=this;
			c3.add(window,'load',init);
			c3.add(window,'load',place);
			c3.add(window,'resize',place);
			return this;
		},
		setContainerId:function(s){id=s;},
		setAnchorId:null,
		falseHeight:60,
		height:220,
		size:{start:{width:null,height:null},end:{width:null,height:null},max:535,space:38}
	}.$();
}