if(typeof cmsdim == 'undefined') {
cmsdim = true;
if(typeof cms == 'undefined') {cms = {};}

// This should be called twice for two word styles like background-color. [background-color, backgroundColor].
cms.getStyle = function(el, sp) {
	var v;
    if (el.currentStyle) { v = el.currentStyle[sp]; }
    else if (window.getComputedStyle) {v = document.defaultView.getComputedStyle(el,null).getPropertyValue(sp); }
    else { v = el.style[sp]; }
    return v;
}
cms.getScrollOffset = function() {
	var x,y;
	if (self.pageYOffset) {
        x = self.pageXOffset;
        y = self.pageYOffset;
	} else {
		var b = i2rd.getBody(), de = document.documentElement;
		if (de && de.scrollTop) {
	        x = de.scrollLeft;
	        y = de.scrollTop;
		} else if (b) {
	        x = b.scrollLeft;
	        y = b.scrollTop;
		}
	}
	return {x:x,y:y};
};
cms.getDocumentDim = function() {
	var b = i2rd.getBody(), de = document.documentElement;
	var x = (de ? de.scrollWidth : b.scrollWidth);
	var y = (de ? de.scrollHeight : b.scrollHeight);
	var x2 = 0, y2 = 0;
	if (self.innerHeight) { 
		x2 = self.innerWidth;
		y2 = self.innerHeight;
	} else if (de.clientHeight) {
		x2 = de.clientWidth;
		y2 = de.clientHeight;
	} else if (b) { 
		x2 = b.clientWidth;
		y2 = b.clientHeight;
	}
	var max = x * y;
	var max2 = x2 * y2;
	if(max2 > max) {
		x = x2;
		y = y2;
	}
	return {x:x,y:y};
};
cms.getWindowDim = function() {
	var x,y;
	if (self.innerHeight) {
		x = self.innerWidth;
		y = self.innerHeight;
	} else {
		var b = i2rd.getBody(), de = document.documentElement;
		if (de && de.clientHeight) {
			x = de.clientWidth;
			y = de.clientHeight;
		}
		else if (b) {
			x = b.clientWidth;
			y = b.clientHeight;
		}
	}
	return {x:x,y:y};
};
cms.positionAtEvt = function(evt, el) {
    var els = el.style, vis = (cms.getStyle(el, "visibility") ||  "visible") ,disp = (cms.getStyle(el, "display") ||  "block");
    if(vis!='hidden'){els.visibility = "hidden";}
    if(disp=='none'){els.display = 'block';}
	var coord = i2rd.getMouseCoord(evt), wdim = cms.getWindowDim(),
	    x = coord.x, y = coord.y,
        eh = el.clientHeight, ew = el.clientWidth;
	if( (x+ew) > wdim.x) {
		x = x - ew - 10;
		if(x<0){x=0;}
	}
    //log4js.logger.info("eh = " + eh + ",ew=" + ew + ",wdimx=" + wdim.x + ",wdimy=" + wdim.y  +",x=" + x +",y=" + y + ",coord.x=" + coord.x +  ",coord.y=" + coord.y);
	el.style.left = x + 10 + "px";
	el.style.top = y + 10 + "px";
    els.visibility = vis;
    els.display = disp;
};
cms.positionAtCenter = function(el) {
    var els = el.style, vis = (cms.getStyle(el, "visibility") ||  "visible") ,disp = (cms.getStyle(el, "display") ||  "block");
    if(vis!='hidden'){els.visibility = "hidden";}
    if(disp=='none'){els.display = 'block';}
    if(!els.left){els.left = "0px";}
	if(!els.top){els.top = "0px";}
	var wdim = cms.getWindowDim(),offset = cms.getScrollOffset(), ddim = cms.getDocumentDim(),
	    eh = el.clientHeight, ew = el.clientWidth,x=0,y=0;
    if(ew < wdim.x) {
        x = (ddim.x - ew) / 2;
        y = ((wdim.y / 2) - (eh / 2));
    }
    //log4js.logger.info("ew=" + ew + ",ddimx=" + ddim.x + ",wdimx=" + wdim.x +",x=" + x +",offset.x=" + offset.x);
	if(x < 0){x = 0;}
	if(y < 0){y = 0;}
	x = x + offset.x;
	y = y + offset.y;
	els.left = x + "px";
	els.top = y + "px";
    els.visibility = vis;
    els.display = disp;
};
}// End conditional eval.
