// Snapsis.DNN utilities
var snapsis_MoveObject = null;
var snapsis_MoveOffsetX = null;
var snapsis_MoveOffsetY = null;
var snapsis_CurrentContainerId=null;
var snapsis_zIndexTop=2000;
function snapsis_popUp(oContainerId,leftPos, topPos){
    
   	var oContainer = document.getElementById(oContainerId);
    if (oContainer != null )
    {
       
		if (oContainer.style.zIndex < snapsis_zIndexTop )
		        oContainer.style.zIndex=snapsis_zIndexTop++;

		if (leftPos != null)
			oContainer.style.left=leftPos;
	    else
	        oContainer.style.left=event.clientX+10;
		if (topPos != null)
			oContainer.style.top=topPos;
    	else
	        oContainer.style.top=event.clientY+10;
	    
		var oMoveHandle = document.getElementById(oContainer.id + "Handle");
	    if ( oMoveHandle )
	    {
	      dnn.dom.attachEvent(oMoveHandle, 'onselectstart', snapsis_cancelEvent);
          dnn.dom.attachEvent(oMoveHandle, 'onmousedown', snapsis_startMouseMove);
        }
		oContainer.style.display="block";
		oContainer.style.visibility="visible";
		++snapsis_zIndexTop;
		oContainer.style.zIndex=snapsis_zIndexTop;
		snapsis_CurrentContainerId = oContainer.id;
		
	}
}

function snapsis_cancelEvent()
{
	return false;
}
function snapsis_hidePopUp(oContainerId){
    if (oContainerId)
        snapsis_CurrentContainerId = oContainerId;
	if (snapsis_CurrentContainerId != null){
		var oContainer=document.getElementById(snapsis_CurrentContainerId);
		if (oContainer != null){
			oContainer.style.display="none";
			oContainer.style.visibility="hidden";
			var oMoveHandle = document.getElementById(oContainer.id + "Handle");
			if ( oMoveHandle )
			{
                snapsis_removeEvent(oMoveHandle,'onmousedown',__dnn_bodyMouseMove);
                snapsis_removeEvent(oMoveHandle,'onmouseup',snapsis_cancelMouseMove);
            }
		}
	}
	return;
}
function snapsis_removeEvent(o,e,f)
{
    if (window.detachEvent)
    {
        if (o == null)
            o = document.body;
        o.detachEvent(e,f);
    }
    else
    {
        document.removeEventListener(e,f,null);
    }
    return true;
}
function snapsis_ToggleDisplay(oContainerId,onoff){

		var oContainer=document.getElementById(oContainerId);
		if (oContainer != null)
		{
		    
		    if (onoff)
		    {
    		    if ( oContainer.style.display == "block" || onoff.toLowerCase() == 'off')
    		    {
    		       oContainer.style.display = "none";
    		       oContainer.style.visibility = "hidden";
                }
                else
                {
                   oContainer.style.display = "block";
                   oContainer.style.visibility = "visible";
                }
            }
            else
            {
    		    if ( oContainer.style.display == "block")
    		    {
    		       oContainer.style.display = "none";
    		       oContainer.style.visibility = "hidden";
                }
                else
                {
                   oContainer.style.display = "block";
                   oContainer.style.visibility = "visible";
                }
            }                
		}
	return;
}

function snapsis_startMouseMove(){

    var HandleId = new String(dnn.dom.event.srcElement.id)
    //the Container being moved needs to have the same id as the handle without the "Handle" suffix
    snapsis_MoveObject = document.getElementById(HandleId.substring(0,HandleId.length - 6));
	var e = dnn.dom.event.object;

	snapsis_MoveOffsetX = e.clientX - snapsis_ElementLeft(snapsis_MoveObject);
	snapsis_MoveOffsetY = e.clientY - snapsis_ElementTop(snapsis_MoveObject);

   dnn.dom.attachEvent(document.body, 'onmousemove', snapsis_handleMouseMove);
   dnn.dom.attachEvent(document.body, 'onmouseup', snapsis_cancelMouseMove);

}
function snapsis_cancelMouseMove(){
    snapsis_removeEvent(null,"onmousemove",snapsis_handleMouseMove);
    snapsis_removeEvent(null,"onmouseup",snapsis_cancelMouseMove);

	snapsis_SaveContainerPosition(snapsis_MoveObject)
    snapsis_MoveObject = null;

}
function snapsis_handleMouseMove(){

	var e = dnn.dom.event.object;

    if ( snapsis_MoveObject )
    {
	if (snapsis_MoveObject.style.position == 'relative' || __isWindows2003())
		snapsis_MoveObject.style.position = 'absolute';

        snapsis_MoveObject.style.left = e.clientX  - snapsis_MoveOffsetX;
        snapsis_MoveObject.style.top = e.clientY  - snapsis_MoveOffsetY;
	    e.returnValue = false;
	    e.cancelBubble = true;
    }
    return false;
}
function snapsis_ElementTop(eSrc)
{
	var iTop = 0;
	var eParent;
	eParent = eSrc;
	while (eParent.tagName.toUpperCase() != "BODY")
	{
		iTop += eParent.offsetTop;
		eParent = eParent.offsetParent;
	}
	return iTop;// + document.body.scrollTop;
}
function snapsis_ElementBottom(eSrc)
{
	var iTop = 0;
	var eParent;
	eParent = eSrc;
	while (eParent.tagName.toUpperCase() != "BODY")
	{
		iTop += eParent.offsetTop;
		eParent = eParent.offsetParent;
	}
	return iTop + eSrc.offsetHeight;//+ document.body.scrollTop
}
function snapsis_ElementLeft(eSrc)
{	
	var iLeft = 0;
	var eParent;
	eParent = eSrc;
	while (eParent.tagName.toUpperCase() != "BODY")
	{
		iLeft += eParent.offsetLeft;
		eParent = eParent.offsetParent;
	}
	return iLeft;// + document.body.scrollLeft;
}
function snapsis_ElementRight(eSrc)
{	
	var iLeft = 0;
	var eParent;
	eParent = eSrc;
	while (eParent.tagName.toUpperCase() != "BODY")
	{
		iLeft += eParent.offsetLeft;
		eParent = eParent.offsetParent;
	}
	return iLeft + eParent.offsetWidth;// + document.body.scrollLeft ;
}
function snapsis_GetCookie(name) {
  var start = document.cookie.indexOf(name + '=');
  var len = start + name.length + 1;
  if ((!start) && (name != document.cookie.substring(0,name.length)))
    return null;
  if (start == -1)
    return null;
  var end = document.cookie.indexOf(';',len);
  if (end == -1) end = document.cookie.length;
  return unescape(document.cookie.substring(len,end));
}

function snapsis_SetCookie(name,value) {
    newdate = new Date();
    expires = snapsis_DateAdd("d",60,newdate);
  document.cookie = 
    name + '=' + escape(value) +
    ( (expires) ? ';expires=' + expires.toGMTString() : '') +
    ';domain=;path=/;secure=';

}

function snapsis_DeleteCookie(name,path,domain) {
  if (snapsis_GetCookie(name))
    document.cookie =
      name + '=' +
      ( (path) ? ';path=' + path : '') +
      ( (domain) ? ';domain=' + domain : '') +
      ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}
function snapsis_DateAdd(timeU,byMany,dateObj) {
	var millisecond=1;
	var second=millisecond*1000;
	var minute=second*60;
	var hour=minute*60;
	var day=hour*24;
	var year=day*365;

	var newDate;
	var dVal=dateObj.valueOf();
	switch(timeU) {
		case "ms": newDate=new Date(dVal+millisecond*byMany); break;
		case "s": newDate=new Date(dVal+second*byMany); break;
		case "mi": newDate=new Date(dVal+minute*byMany); break;
		case "h": newDate=new Date(dVal+hour*byMany); break;
		case "d": newDate=new Date(dVal+day*byMany); break;
		case "y": newDate=new Date(dVal+year*byMany); break;
	}
	return newDate;
}