//This file requires CQL.js: ~/CQLWebResource.axd?r=WWW.Resources.ClientIncludes.CQL.js
function turnon(div, offsetX, offsetY)
{
	var thediv = document.getElementById(div);

	// modified by celst 03.15.06
	// Simple follow the mouse script
	// copyright Stephen Chapman, 30th September 2005
	// you may copy this script provided that you retain the copyright notice
	// modified by chadg 2006-08-09
	// added javascript code to avoid collisions with window edges
	
	var offX = offsetX;         // X offset from mouse position
	var offY = offsetY;         // Y offset from mouse position
	
	// no changes required below this line
	function mouseX(evt)
	{
		if (!evt) evt = window.event;
		
		if (evt.pageX) return evt.pageX; 
		
		else if (evt.clientX) return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); 
	
		else return 0;
	} 
	
	function mouseY(evt) 
	{
		if (!evt) evt = window.event;
		
		if (evt.pageY) return evt.pageY;
	
		else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	
		else return 0;
	}
	
	
	function follow(evt)
	{
		if (document.getElementById)
		{
			var objdiv = document.getElementById(div);
			var obj = objdiv.style;
			
			var newLeft = (parseInt(mouseX(evt))+offX);
			var newTop = (parseInt(mouseY(evt))+offY);
			
			//this moves the location of the div if it runs into borders
			if (typeof(document.body.offsetWidth) != 'undefined')
			{
				//got help from http://www.howtocreate.co.uk/tutorials/javascript/browserwindow. strict mode
				var xOffset = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
				var yOffset = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
				var docWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
				var docHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

				if (newLeft + objdiv.offsetWidth > docWidth + xOffset)
					newLeft = (parseInt(mouseX(evt))+-(offX+objdiv.offsetWidth));
			
				if (newTop + objdiv.offsetHeight > docHeight + yOffset)
					newTop = (parseInt(mouseY(evt))+-(offY+objdiv.offsetHeight));
				
				//toggle ddls for IE
				if (isIE() && CQL && CQL.CRect)
				{
					var divrect = new CQL.CRect(newLeft, newTop, newLeft + objdiv.offsetWidth, newTop + objdiv.offsetHeight);
					eSelects = document.getElementsByTagName("SELECT");
					for (var i=0; i < eSelects.length; i++) {
						var rec = new CQL.CRect(eSelects[i]);
					
						if (divrect.intersect(rec)) {
							eSelects[i].style.visibility = "hidden";
						} else {
							eSelects[i].style.visibility = "visible";
						}
					}
				}
			}
			
			obj.left = newLeft + 'px';
			obj.top = newTop + 'px';
		}
	} 
	
	document.onmousemove = follow;

	// change display css to block
	// put this at the end or PCI makes it appear early
	thediv.style.display="block";

}

function devNull() {
	return false;
}


function turnoff(div)
{
	var thediv = document.getElementById(div);
  
  document.onmousemove = devNull;
	// change display css to none
	thediv.style.display="none";

	if (isIE() && CQL)
		CQL.ToggleDDLsOverlappingDIV(div, true);
}

function popup(theurl,windowname,features)
{
window.open(theurl,windowname,features);
void 0;
}

/* Opens a new popup window */

var viewer;

function popWindow(w, h, url) {

	closeViewer();

	var options = "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=" + w + ",height=" + h + ",left=200,top=25";

	viewer=window.open(url,"viewerwindow",options);

	viewer.focus();

}



/* Closes window on page unload */

function closeViewer(){

	if (viewer && !viewer.closed){

		viewer.close();

	}

}

function isIE()
{
	return (navigator && navigator.appVersion && navigator.appVersion.toLowerCase().indexOf("msie") > 0);
}

// Show a "what's this?" overlay at the cursor position
function showOverlay(overlayDiv, side) {
    var popups = getElementsByClass('positionedOverlay', document, 'div');
    for (i = 0; i < popups.length; i++) {
        popups[i].style.visibility = "hidden";
    }
    var theDiv = document.getElementById(overlayDiv);
    AssignPosition(theDiv, side);
}
// Hide a "what's this" overlay
function hideOverlay(overlayDiv) {
    document.getElementById(overlayDiv).style.visibility = "hidden";
}
function getElementsByClass(searchClass, node, tag) {
    var classElements = new Array();
    if (node == null)
        node = document;
    if (tag == null)
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    for (i = 0, j = 0; i < elsLen; i++) {
        if (els[i].className.indexOf(searchClass) > -1) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

// Utility code to determine where the overlay is to be displayed
var cX = 0; var cY = 0;
var rX = 0; var rY = 0;
var divY = 0;
if (document.all) { document.onmousemove = UpdateCursorPositionDocAll; }
else { document.onmousemove = UpdateCursorPosition; }
function UpdateCursorPosition(e) { cX = e.pageX; cY = e.pageY; }
function UpdateCursorPositionDocAll(e) { cX = event.clientX; cY = event.clientY; }
function AssignPosition(d, side) {
    var pageX = findPos(document.getElementById("frm1"))[0];

    if (self.pageYOffset) {
        rX = self.pageXOffset;
        rY = self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop) {
        rX = document.documentElement.scrollLeft;
        rY = document.documentElement.scrollTop;
    }
    else if (document.body) {
        rX = document.body.scrollLeft;
        rY = document.body.scrollTop;
    }
    if (document.all) {
        cX += rX;
        cY += rY;
    }
    d.style.marginLeft = "-5000px";
    d.style.visibility = "visible";

    divY = cY - (d.clientHeight);
    if (divY < 0)
        divY = 0;
    d.style.marginLeft = "0";
    d.style.top = (divY) + "px";

    if (side == 'left') {
        d.style.right = (cX) + "px";
    } else {
        d.style.left = (cX - pageX + 10) + "px";
    }
}

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curleft, curtop];
}
function getElementsByClass(searchClass, node, tag) {
    var classElements = new Array();
    if (node == null)
        node = document;
    if (tag == null)
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    for (i = 0, j = 0; i < elsLen; i++) {
        if (els[i].className.indexOf(searchClass) > -1) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

function checkSelection(itemSelector, msg) {
    var selectedItems = $(itemSelector);
    if (selectedItems.length == 1) {
        if (selectedItems.val().length <= 0)
            return confirm(msg);
    }
    return true;
}
