//Addisional support functions for drag and drop scrip

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return (ev.clientX + ', ' + ev.clientY);
	}
	return (ev.clientX + document.body.scrollLeft - document.body.clientLeft) + ', ' + (ev.clientY + document.body.scrollTop  - document.body.clientTop);
}

function getPosition(e){
	var left = 0;
	var top  = 0;
	while (e.offsetParent){
		left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
		top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
		e     = e.offsetParent;
	}


	left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
	top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);

	return {x:left, y:top};

}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return {x:curleft, y:curtop};
}
function getMouseOffset(target, ev){
	
	var curleft = curtop = 0;
	if (target.offsetParent) {
		curleft = target.offsetLeft
		curtop = target.offsetTop
		while (target = target.offsetParent) {
			curleft += target.offsetLeft
			curtop += target.offsetTop
		}
	}
	
	var mousePos  = mouseCoords(ev);
	
	//return ((mousePos.x ) + ", " + (mousePos.y ));
	return {x:curleft , y:curtop};
}	

function setOrigXYPosition(element)
{
	document.getElementById('orig_pos_x').value = findPos(element).x; 
	document.getElementById('orig_pos_y').value = findPos(element).y
}

function getDimensions(element) {
    dimensions = { 'width': null, 'height': null };

    if (document.all) {
        dimensions['width'] = parseInt(element.currentStyle.width);
        dimensions['height'] = parseInt(element.currentStyle.height);
    }
    else {
        dimensions['width'] = parseInt(document.defaultView.getComputedStyle(element, '').getPropertyValue('width'));
        dimensions['height'] = parseInt(document.defaultView.getComputedStyle(element, '').getPropertyValue('height'));
    }

    return dimensions;
}
function removeElement(element)
{
	var el = document.getElementById(element);
	el.parentNode.removeChild(el);
}

function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames[i].replace(/-/g, "\-") + "(\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames.replace(/-/g, "\-") + "(\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}