/*
 * favore::dhtmlDesktop 1.0
 *
 * Copyright (c) 2007 Evgenij Terehov (www.favore.net)
 * Licensed under the GPL licenses.
 *
 */

function TIcon(pIconId)
{
	// icon jQuery-Object
	var icon = $("a#"+pIconId);
	// icon ID
	var iconId = pIconId;
	
	
	// ---------------------
	// basic attributes
	
	// desktop position (from the left top corner)
	var topPx;
	var leftPx;

	// window click position
	var clickIconX;	
	var clickIconY;
	
	// "construct": creates a new window
	__init();
	
	
	//--------------------------------------	
	//(private) "construct": creates a new window
	function __init()
	{


		icon.mousedown( function() { 
										desktop.setIconActive(this.id); 
										desktop.startAction('moveIcon',iconId); 
										
										// set all icons to the back
										$("a.icon").css("z-index", 1);
										// and me to the foreground
										$(this).css("z-index", 2);
										 
										return false;
									} );
		icon.mouseup( function() { 
										desktop.stopAction();
										__checkMovement(this);  
								} );
		
		icon.click(function(){
			return false; // dont follow the anchor
		});
		
		icon.dblclick(function()
		{
			__openIcon(this);
			return false; // dont follow the anchor
			
		});

	}
	
	//------ icon actions ----------------
	
	// (public) saves the click positions
	this.setClickPosition = function(pMouseX, pMouseY)
	{
				
		// icon click position
		leftPx = icon[0].offsetLeft;
		topPx  = icon[0].offsetTop;
		
		clickIconX = pMouseX - icon[0].offsetLeft;
		clickIconY = pMouseY - icon[0].offsetTop;
				
	}
	// (public) follows the mouse
	this.onMouseMove = function(pMouseX, pMouseY)
	{

		__setPositionX((pMouseX-clickIconX));
		__setPositionY((pMouseY-clickIconY));	  
	
	}
	
	// no movement? open!
	function __checkMovement(icon)
	{
		if(icon.offsetLeft == leftPx)
		{
			__openIcon(icon);
		}
		
	}
	
	function __openIcon(icon)
	{
		activeId = icon.id;
		openIcon(icon);
	}
	
//------ position the icon ----------------
	
	// (public) x position
	this.setPositionX = function(positionX)
	{
		__setPositionX(positionX); 	
	}
	
	// (private) x position
	function __setPositionX(positionX)
	{
		icon.css('left',positionX);
	}
	
	// (public) y position
	this.setPositionY = function(positionY)
	{
		__setPositionY(positionY);
	}
	
	// (private) y position
	function __setPositionY(positionY)
	{
		icon.css('top',positionY);
	}
	
			
	
}
