window.addOnload = function (fn)
{
	if (!window.OnloadCache) window.OnloadCache = [];
	var ol = window.OnloadCache;
	ol[ol.length] = fn;
}

window.onload = function ()
{
	var ol = window.OnloadCache;
	if (ol)
	for (var x = 0; x < ol.length; x++)
	this.action = ol[x]();
}


window.addOnresize = function (fn)
{
	if (!window.OnresizeCache) window.OnresizeCache = [];
	var ol = window.OnresizeCache;
	ol[ol.length] = fn;
}

window.onresize = function ()
{
	var ol = window.OnresizeCache;
	if (ol)
	for (var x = 0; x < ol.length; x++)
	this.action = ol[x]();
}


var popUpWin=0;
function popUpWindow(URLStr, left, top, width, height)
{
	if(popUpWin)
	{
		if(!popUpWin.closed) popUpWin.close();
	}
	popUpWin = open(URLStr, 'popUpWin', 'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbar=no,resizable=yes,copyhistory=no,width='+width+',height='+height+',left='+left+', top='+top+',screenX='+left+',screenY='+top+'');
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

function getStyle(el,styleProp)
{
	var x = document.getElementById(el);
	if (window.getComputedStyle)
		var y = window.getComputedStyle(x,null).getPropertyValue(styleProp);
	else if (x.currentStyle)
		var y = eval('x.currentStyle.' + styleProp);
	return y;
}

function getElementStyle(elemID, IEStyleProp, CSSStyleProp) {
    var elem = document.getElementById(elemID);
    if (elem.currentStyle) {
        return elem.currentStyle[IEStyleProp];
    } else if (window.getComputedStyle) {
        var compStyle = window.getComputedStyle(elem, "");
        return compStyle.getPropertyValue(CSSStyleProp);
    }
    return "";
}

function getElementPosition(elemID) {
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
	var offsetRight = 0;
	//alert(navigator.userAgent);
	
	if (navigator.userAgent.indexOf("MSIE") && navigator.userAgent.indexOf("Gecko") == -1 && navigator.userAgent.indexOf("Opera") == -1 && document.location.href.indexOf('balmoralgolf') != -1) {
		// IE sets absolute co-ordinates for current element regardless of ancestors' position types
		offsetLeft = offsetTrail.offsetLeft;
		offsetTop = offsetTrail.offsetTop;
	} else {
	
		while (offsetTrail) {
			//if (offsetTrail.getAttribute('id')) {
				//var position = getElementStyle(offsetTrail.getAttribute('id'), 'position', 'position')
				
				//alert("Position is " + position);
				
				//alert("Before offsettop is " + offsetTop + 'Current Element (' + offsetTrail.getAttribute('id') + ') top is ' + offsetTrail.offsetTop + ' - ');
				
				//if (position != 'relative') {
					offsetLeft += offsetTrail.offsetLeft;
					offsetTop += offsetTrail.offsetTop;
				//}
			//}
		
			//alert("After offsettop is " + offsetTop);
			
			
			offsetTrail = offsetTrail.offsetParent;
			//alert('Current Elements position type is ' + getStyle(elemID, 'position'));
			//alert('Current Elements style top is ' + getStyle(elemID, 'top'));
		}
		if (navigator.userAgent.indexOf("Mac") != -1 && 
			typeof document.body.leftMargin != "undefined") {
			offsetLeft += document.body.leftMargin;
			offsetTop += document.body.topMargin;
		}
	}
    return {left:offsetLeft, top:offsetTop};
}

function attachElements(element1, element2)
{
	var element1_pos = getElementPosition(element1);
	element2 = document.getElementById(element2);
	
	element2.style.top = element1_pos['top'] + 'px';
	//alert(getElementStyle(element1, 'position', 'position'));
	//alert(element1_pos['top']);
	var element2_left = (element1_pos['left'] + document.getElementById(element1).offsetWidth) - element2.offsetWidth;
	//var element2_left = (element1_pos['right'] - element2.offsetWidth);
	
	if (navigator.userAgent.indexOf("MSIE") && navigator.userAgent.indexOf("Gecko") == -1 && navigator.userAgent.indexOf("Opera") == -1) {
		// Adjust for effects of restrict width script
		element2_left = element2_left + document.getElementById('restrict_width').offsetLeft;
	}
	
	//alert("elemnt 1 is " + element1_pos['left'] + " elemnt 1 width is " + document.getElementById(element1).offsetWidth);
	element2.style.left = element2_left + 'px';
	
}

function attachElements2(element1, element2)
{
	var element1_pos = getElementPosition(element1);
	element2 = document.getElementById(element2);
	
	element2.style.top = element1_pos['top'] + 'px';

	var element2_left = (element1_pos['left'] + document.getElementById(element1).offsetWidth) - element2.offsetWidth;
	//alert(element1);
	if (navigator.userAgent.indexOf("MSIE") && navigator.userAgent.indexOf("Gecko") == -1 && navigator.userAgent.indexOf("Opera") == -1) {
		//alert(document.getElementById('restrict_width').offsetLeft);
		if (document.getElementById('restrict_width') && element1_pos['left'] > 350) {
			element2_left = element2_left - document.getElementById(element1).offsetWidth + 300 - element2.offsetWidth;
		}
	}
	
	if (navigator.userAgent.indexOf("MSIE") && navigator.userAgent.indexOf("Gecko") == -1 && navigator.userAgent.indexOf("Opera") == -1) {
		// Adjust for effects of restrict width script
		if (document.getElementById('restrict_width')) {
			element2_left = element2_left + document.getElementById('restrict_width').offsetLeft;
		}
		//element2_left = element2_left + element2.offsetWidth;
	}
	
	//alert("elemnt 1 is " + element1_pos['right']);
	element2.style.left = element2_left + 'px';
	
}

function fade(obj, destOpacity, rate, delta)
{
	var curOpacity, newOpacity, direction;

	if (typeof(obj) != 'object') {
		if (document.getElementById)
			obj = document.getElementById(obj);
		else 
			return false;
	} else {
		// Make sure an id has been set
		if (obj.id.length == 0)
			return false;
	}

	if (!obj.filters && !obj.style.MozOpacity)
		return false; // Not IE or Mozilla
	
	//curOpacity = 0;
	/*if(obj.style.MozOpacity)
		curOpacity = (obj.style.MozOpacity * 100);
	else if (obj.filters && obj.filters.alpha && obj.filters.alpha.opacity)
		curOpacity = obj.filters.alpha.opacity;*/
	if(obj.style.MozOpacity)
		curOpacity = (obj.style.MozOpacity * 100);
	else
		curOpacity = obj.filters.alpha.opacity;
	
	/*if (curOpacity == 0) {
		//obj.style.MozOpacity
		obj.filters.alpha.opacity = 0;
	}*/
		
	
	// Check if this is a new object
	if (typeof(obj.tId) != 'undefined') 
		clearTimeout(obj.tId); // Get rid of previous timeout for this object
	else
		obj.startOpacity = curOpacity; // Store the original opacity within the object itself

	if (destOpacity == -1)
		destOpacity = obj.startOpacity; // Fade back to original opacity

	// Fix mozilla bug
	if (destOpacity == 100)
		destOpacity = 99;

	// Get difference between destination opacity and current opacity
	diff = destOpacity - curOpacity;
	// Set default direction to "fade in"
	direction = 1;
	
	if (curOpacity >= destOpacity)
		direction = -1; // Request has been made to fade out so reverse direction

	// Get the required change (Minimum between specified delta and what's left to go)
	delta = Math.min(direction * diff, delta);

	/*newOpacity = (curOpacity + (direction * delta));
	alert(newOpacity);
	newOpacity = ((newOpacity == 100) ? 99.999 : newOpacity);*/

	if(obj.style.MozOpacity) {
		obj.style.MozOpacity = (curOpacity + (direction * delta)) / 100;
		obj.style.MozOpacity = newOpacity;
		//newOpacity = obj.style.MozOpacity * 100;
		
	} else {
		obj.filters.alpha.opacity += direction * delta;
		newOpacity = obj.filters.alpha.opacity;
	}
	
	/*if (newOpacity == 99.999)
		newOpacity = 100*/
	
	//obj.mine += "Calc is " + ((curOpacity + (direction * delta)) / 100);
	if (newOpacity != destOpacity) {
		// Create a new timeout for this object
		obj.tId = setTimeout("fade('"+obj.id+"',"+destOpacity+","+rate+","+delta+")",rate);
		//obj.mine += ("  After is " + newOpacity + "this is" + "fade('"+obj.id+"',"+destOpacity+","+rate+","+delta+")\n");
	}
}

//document.write('<A href="javascript:alert(document.getElementById(' + "'ceon_edit_item_4_edit'" + ').mine)">asdasdasdasdasd</a>');
