var ddhtml = {

   ITEM_TYPE_NAME : "drag",
   TARGET_TYPE_NAME : "target",
   ITEM_OPTIONS : CURSOR_HAND + TRANSPARENT,
   TARGET_OPTIONS : NO_DRAG,

   IMAGE_TYPES : new Object(),
   NO_ROOM_MSG : "No Room",
   BORDER : 2,
   
   

isItem : function (obj) { return ddhtml.IMAGE_TYPES[obj.name].type == ddhtml.ITEM_TYPE_NAME; },
isTarget : function (obj) { return ddhtml.IMAGE_TYPES[obj.name] == ddhtml.TARGET_TYPE_NAME; },

defX : function (obj) { return ddhtml.IMAGE_TYPES[obj.name].x; },
defY : function (obj) { return ddhtml.IMAGE_TYPES[obj.name].y; },

getRealLeft : function (imgElem) {
	xPos = imgElem.offsetLeft;
	tempEl = imgElem.offsetParent;
	while (tempEl != null) {
  		xPos += tempEl.offsetLeft;
  		tempEl = tempEl.offsetParent;
  	}
	return xPos;
},

getRealTop : function (imgElem) {
	yPos = imgElem.offsetTop;
	tempEl = imgElem.offsetParent;
	while (tempEl != null) {
  		yPos += tempEl.offsetTop;
  		tempEl = tempEl.offsetParent;
  	}
	return yPos;
},



sortChildren : function (_myParent) {
	var _myCh = _myParent.children;
	
	_myX = _myParent.x + ddhtml.BORDER;
	_myY = _myParent.y + ddhtml.BORDER;
	var _myHeight = 0;
	var _myWidth = 0;
	
	for (var i = 0; i < _myCh.length; i++) {
		if (_myX + _myCh[i].w > _myParent.x + _myParent.w) {
			_myY += _myHeight + ddhtml.BORDER;
			_myX = _myParent.x + ddhtml.BORDER;
			_myHeight = 0;
		}

		if (_myY + _myCh[i].h > _myParent.y + _myParent.h) {
			_myCh[i].parent._removeChild(_myCh[i]);
			_myCh[i].moveTo(ddhtml.defX(_myCh[i]), ddhtml.defY(_myCh[i]));
			break;
		}
	
		_myCh[i].moveTo(_myX, _myY);
		
		_myX += _myCh[i].w + ddhtml.BORDER;
		_myHeight = _myHeight > _myCh[i].h ? _myHeight : _myCh[i].h;
	}
},

removeChild : function (_myParent, _myChild) {
	if (_myParent == null) return;
	
	_myParent.detachChild(_myChild); 
	_myParent._removeChild(_myChild, 1);
	 ddhtml.sortChildren(_myParent);
},

putChild : function (_myParent, _myChild) {
	if (!ddhtml.isTarget(_myParent) || !ddhtml.isItem(_myChild)) {
		alert("Function putChild(): Incorrect parameters given"); 
		return; 
	}
	
	if (_myChild.parent != null) {
		 ddhtml.removeChild(_myChild.parent, _myChild);
	}
	_myParent.addChild(_myChild);
	ddhtml.sortChildren(_myParent);
},

my_PickFunc : function () {
	if (dd.obj.id.indexOf('myRuler') != -1) {
		return;
	}

	var _myEl = document.getElementById(dd.obj.name + "_up");
	if (_myEl) {
		var _mySrc = _myEl.src;
		dd.obj.swapImage(_mySrc);
	}
},

my_DropFunc : function () {
	if (dd.obj.id.indexOf('myRuler') != -1) {
		return;
	}

    dd.obj.swapImage(dd.obj.defsrc);

    if (!ddhtml.isItem(dd.obj)) return;

    var _myDrop = dd.obj.getEltBelow();
    if (_myDrop != null) {

        var _myParent = ddhtml.isTarget(_myDrop) == true ? _myDrop : _myDrop.parent;

        if (_myParent == null) {
            if (dd.obj.parent != null) {
                ddhtml.removeChild(dd.obj.parent, dd.obj);
            }
            dd.obj.moveTo(ddhtml.defX(dd.obj), ddhtml.defY(dd.obj));
        } else {
        ddhtml.putChild(_myParent, dd.obj);
        }
    } else {
        if (dd.obj.parent != null) {
             ddhtml.removeChild(dd.obj.parent, dd.obj);
        }
        dd.obj.moveTo(ddhtml.defX(dd.obj), ddhtml.defY(dd.obj));
    }
},

getValue : function () {
	var result = {}, i;

	for (i = 0; i < dd.elements.length; i++) {
		if (ddhtml.isTarget(dd.elements[i])) {
			var ch = dd.elements[i].children, names = [];
		
			if (ch.length > 0) {
				for (var j = 0; j < ch.length; j++) 
					names.push(ch[j].name);
	                        
				result[dd.elements[i].name] = names;
			}
		}
	}
	
	return result;
},

resetAll : function () {
	for (var i = 0; i < dd.elements.length; i++) {
		try {		
			if (ddhtml.isItem(dd.elements[i])) {
				 ddhtml.removeChild(dd.elements[i].parent, dd.elements[i]);
				dd.elements[i].moveTo(ddhtml.defX(dd.elements[i]), ddhtml.defY(dd.elements[i]));
			}
		} catch (e) {
		
		}
	}
},

setValue : function (_myValue)
{
	ddhtml.resetAll();
	

	for (var i in _myValue) {
		var _myArr = _myValue[i];
		for (var j in _myArr) {
			if (!dd.elements[_myArr[j]]) {
				continue;
			}
			
			ddhtml.putChild(dd.elements[i], dd.elements[_myArr[j]]);
		}
	}
}
};

function my_PickFunc() {
    return ddhtml.my_PickFunc();
};

function my_DropFunc(){
    return ddhtml.my_DropFunc();
};

function makeDHTML() {
	var _myImages = document.images;
	var _myArg = new Array();

	dd.elements = [];

	var str = "";
	for (var i = 0; i < _myImages.length; i++) {
		switch (_myImages[i].id) {
			case ddhtml.ITEM_TYPE_NAME:
				_myArg.push(_myImages[i].name + ddhtml.ITEM_OPTIONS );
				var _myProp = new Object();

//				_myProp["x"] =   ddhtml.getRealLeft(_myImages[i]);
//				_myProp["y"] =   ddhtml.getRealTop(_myImages[i]);
				_myProp["x"] =  $.iUtil.getPosition(_myImages[i]).x;
				_myProp["type"] = ddhtml.ITEM_TYPE_NAME;
				_myProp["y"] =  $.iUtil.getPosition(_myImages[i]).y;
				 ddhtml.IMAGE_TYPES[_myImages[i].name] = _myProp;
				break;
			case ddhtml.TARGET_TYPE_NAME:
				_myArg.push(_myImages[i].name +  ddhtml.TARGET_OPTIONS );
				 ddhtml.IMAGE_TYPES[_myImages[i].name] = ddhtml.TARGET_TYPE_NAME;
				break;
			default:
				continue;
		}
	}
	
	var _myEval = "SET_DHTML(\"" + _myArg.join("\",\"") + "\");"
	//alert(_myEval);
	
	eval(_myEval);
//	for (var i = 0; i < dd.elements.length; i++) {
//		if (ddhtml.isItem(dd.elements[i])) {
//           alert(ddhtml.isItem(dd.elements[i]));
//		}
//	}

}
