/**
*	modello框架
**
*	author 贺博
*	date 2006-11-9
*/
//Env.require("/javascript/com.duxiu.js.Component.js");

Panel = Class.create(Component);
Panel.register("com.duxiu.js.Panel");

Panel.MIN_TOP = 0;
Panel.MIN_LEFT = 0;

Panel.IndexZ=0;

Panel.construct = function($self, $class){	
	var div;
	var movObject;

	this.initialize = function(_d){
		if(typeof _d=='undefined'){		
			div = document.createElement("div");
			
			_paintPanel();
		}		
		else if(typeof _d=='string'||typeof _d=='number'){
			try{
				div = getObject(_d);
			}
			catch(e){
				div = document.createElement("div");
				
				div.id =_d;
				_paintPanel();
			}
		}		
		else if(typeof _d=='object'){
			div = _d;
		}
		
		$self.super0.initialize(div);
	}

	this.setInnerHTML = function(htmlcode){		
		div.innerHTML = htmlcode;
	}

	/**
	*设置是否可运动
	*/	
	this.setMoveAble = function(b){
		if(b){
			if(!movObject){
				movObject =div;				
			}
			
			if(isIE()){
				div.onmousedown = _startDrag;
				div.onmousemove = _draging;
				div.onmouseup = _moveStop;	
			}
			else{				
				div.onmousedown = _mozilla_startDrag;
			}		
		}
		else{
			div.onmousedown = "";
			div.onmousemove = "";
			div.onmouseup = "";	
		}
	}	
	/**
	*设置运动对象，默认为自己
	*/	
	this.setMoveObject = function(b){
		movObject = b;
	}	
	
	//绘制Panel
	var _paintPanel = function(){
		div.style.position = 'absolute';	
		div.style.borderStyle = "dashed";
		div.style.borderWidth = "1px";
		div.style.width = "200px";
		
		div.style.top = "0px";
		div.style.left = "0px";
			
		div.style.padding = "5px";
		div.style.textAlign = "left";
		div.style.wordWrap = "break-word";
		
		div.onmousedown =_onclick;	
	}
	
	var _onclick=function(){
		this.style.zIndex=++Panel.IndexZ;
	}
	
	//运动状态标识
	var _state_move = false;
	
	var _startDrag = function(){
		this.setCapture();
		if(event.button==1){
			_state_move=true;
		}
	}
	
	var _fx = 0;
	var _fy = 0;
	
	var _draging = function(){
		if(_state_move){
			var str = movObject.style.width;
			if(_fx==0){
				_fx=event.offsetX;
			}
			
			if(_fy==0){
				_fy=event.offsetY;
			}
			
			var k = movObject.style.borderWidth;
			k = k.replace(/\D/g,"");
			
			var left =event.clientX+getPageScrollWidth()-(_fx)-2*k
			if(Panel.MIN_LEFT<=left){	
				movObject.style.left =left;
			}
			
			var top =event.clientY+getPageScrollHeigth()-(_fy)-2*k
			if(Panel.MIN_TOP<=top){	
				movObject.style.top =top;
			}
		}
	}
	
	var _moveStop = function(){
		this.releaseCapture();
		_state_move=false;
		_fx=0;
		_fy=0;
	}
	
	//mozilla firefox 拖动	
	var _mozilla_startDrag =function(event){	
		if(event.button==0){
			_state_move =true;
		}
		window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
		
		window.onmousemove=_mozilla_draging;
		
		window.onmouseup=_mozilla_moveStop;
	}
	
	var _mozilla_draging = function(event){
		if(_state_move){
			var str = movObject.style.width;
			if(_fx==0){
				_fx=event.layerX;
			}
			
			if(_fy==0){
				_fy=event.layerY;
			}
			
			var k = movObject.style.borderWidth;
			k = k.split('px')[0].replace(/\D/g,"");
			
			var left =event.clientX+getPageScrollWidth()-(_fx)-2*k			
			
			if(Panel.MIN_LEFT<=left){	
				movObject.style.left =left+"px";
			}
			
			var top =event.clientY+getPageScrollHeigth()-(_fy)-2*k
			if(Panel.MIN_TOP<=top){	
				movObject.style.top =top+"px";
			}			
		}
	}
	
	var _mozilla_moveStop = function(event){		
		window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
		_state_move=false;
		_fx=0;
		_fy=0;
	};	
}