Показать сообщение отдельно
  #6 (permalink)  
Старый 01.07.2007, 19:00
Интересующийся
Отправить личное сообщение для seagor Посмотреть профиль Найти все сообщения от seagor
 
Регистрация: 01.07.2007
Сообщений: 10

function dhtmlDrag()
{
	this.init = function(item)
	{
		this.object = item;
		this.obj	= item.obj;
		this.parent = item.obj.parentNode;
		
		// Клонируем объект
		this.clone();
		
		var self = this;
		
		this.item.onmousedown = function(e)
		{
			if(typeof e == "undefined")
			{
				e = event;
			} 
    		
    		self.setup(e);
		}
	}
	
	this.distance = function(e)
	{
		this.distancex = e.clientX - this.initmousex;
		this.distancey = e.clientY - this.initmousey;
		
		this.move(e);
	}
	
	this.move = function(e)
	{
		var left = this.distancex + this.initx;
		var top  = this.distancey + this.inity;
		
		this.item.style.left = left + "px";
		this.item.style.top  = top + "px";
	}
	
	this.setup = function(e)
	{
		// Задаем класс
		this.item.className = 'file_item_clone file_item_show';
		
		this.initmousex = e.clientX;
		this.initmousey = e.clientY;
		
		this.initx = this.item.offsetLeft;
		this.inity = this.item.offsetTop;
		
		var self = this;
		
		this.item.onmousemove = function(e)
		{
			if(typeof e == "undefined")
			{
				e = event;
			}
			
			self.distance(e);
		} 
		
		this.item.onmouseup = function(e)
		{
			
			if(typeof e == "undefined")
			{
				e = event;
			}
			
			self.stop(e);
		}
	}
	
	this.stop = function(e)
	{
		e.onmousemove = null;
		e.onmouseup	 = null;
		
		// Задаем класс
		this.item.className = 'file_item_clone file_item_hidden';
		
		// Указываем позицию объекту
		this.item.style.top = this.pos.top - 5 + 'px';
		this.item.style.left = this.pos.left - 4 + 'px';
	}
	
	this.clone = function()
	{
		// Получаем позицию оригинала
		this.pos = this.getObjectPosition(this.obj);
		
		// Клонируем объект
		this.item = this.obj.cloneNode(true);
		
		// Задаем класс
		this.item.className = 'file_item_clone file_item_hidden';
		
		// Указываем позицию объекту
		this.item.style.top = this.pos.top - 5 + 'px';
		this.item.style.left = this.pos.left - 4 + 'px';
		
		this.obj.parentNode.parentNode.appendChild(this.item);
	}
	
	// Получение позиции объекта
	this.getObjectPosition = function(obj) 
	{
  		var position = { left:0, top:0 };
  		
  		while (obj) 
  		{
    		position.left += obj.offsetLeft;
    		position.top  += obj.offsetTop;
    		obj = obj.offsetParent;
  		}
  		
  		return position;
	}
}
Ответить с цитированием