﻿<!-- //
var table_divDrag;
var table_aDropTargets = [];
var table_oDropTarget = null;
var table_nDropTarget = -1;

function AddDropTargets()
    {
    var nTargets = table_aDropTargets.length;
    for(var nTarget = 0; nTarget < arguments.length; nTarget++)
        {
        if(arguments[nTarget]) table_aDropTargets[nTargets] = arguments[nTarget];
        }
    }

function GetDragCoords(eEvent)
    {
    eEvent = eEvent || window.event;
    if(eEvent.pageX || eEvent.pageY)
        {
        eEvent.preventDefault();
        return { nX:eEvent.pageX, nY:eEvent.pageY };
        }
    eEvent.cancelBubble = true;
    eEvent.returnValue = false;
    return { nX:eEvent.clientX + document.documentElement.scrollLeft - document.body.clientLeft, nY:eEvent.clientY + document.documentElement.scrollTop - document.body.clientTop };
    }
    
function GetDragOffset(oSrc)
    {
    var nLeft = nTop = 0;
    if(oSrc.offsetParent)
	    {
	    nLeft = oSrc.offsetLeft;
	    nTop = oSrc.offsetTop;
	    while(oSrc.offsetParent && oSrc.parentNode != table_divDrag.parentNode)
	        {
	        oSrc = oSrc.offsetParent
	        nLeft += oSrc.offsetLeft;
	        nTop += oSrc.offsetTop;
	        }
	    }
    return {nX:nLeft, nY:nTop};
    }
    
function MoveNode(oSrc, oDst)
    {
    if(oSrc && oDst)
        {
        
        }
    }
    
function SwapNode(oSrc, oDst)
    {
    if(oSrc && oDst)
        {
        if(oSrc.nodeName != oDst.nodeName) return;
        var eSrcTable = (oSrc.nodeName == "TR") ? oSrc.parentNode : oSrc.parentNode.parentNode;
        var eDstTable = (oDst.nodeName == "TR") ? oDst.parentNode : oDst.parentNode.parentNode;
        if(eSrcTable != eDstTable) return;
        
        if(oSrc.swapNode)
            oSrc.swapNode(oDst);
        else
            {
            var elParentNode = oDst.parentNode;
            var elNextSibling = oDst.nextSibling;
            
            if(elNextSibling == oSrc)
                elParentNode.insertBefore(oSrc, oDst);
            else if(oDst == oSrc.nextSibling)
                elParentNode.insertBefore(oDst, oSrc);
            else
                {
                oSrc.parentNode.replaceChild(oDst, oSrc);
                elParentNode.insertBefore(oSrc, elNextSibling);
                }
            }
            
        var strSwapClass = oSrc.className;
        oSrc.className = oDst.className;
        oDst.className = strSwapClass;
        }
        
    return false;
    }
    
function OnDrag(eEvent)
    {
    if(table_divDrag)
        {
        var objDragCoords = GetDragCoords(eEvent);
        table_divDrag.style.left = (objDragCoords.nX - table_divDrag.offset.nX) + "px";
        table_divDrag.style.top = (objDragCoords.nY - table_divDrag.offset.nY) + "px";
        table_divDrag.style.display = "";
        
        if(table_nDropTarget != -1 && table_aDropTargets[table_nDropTarget] != table_divDrag.oSrc)
            table_aDropTargets[table_nDropTarget].className = table_oDropTarget.className;
        
        for(var nTarget = 0; nTarget < table_aDropTargets.length; nTarget++)
            {
            objTargetOffset = GetDragOffset(table_aDropTargets[nTarget]);
            nTargetWidth = table_aDropTargets[nTarget].offsetWidth;
            nTargetHeight = table_aDropTargets[nTarget].offsetHeight;
            
            if((objDragCoords.nX > objTargetOffset.nX)
            && (objDragCoords.nX < (objTargetOffset.nX + nTargetWidth))
            && (objDragCoords.nY > objTargetOffset.nY)
            && (objDragCoords.nY < (objTargetOffset.nY + nTargetHeight)))
                {
                table_oDropTarget = table_aDropTargets[nTarget].cloneNode(true);
                table_nDropTarget = nTarget;
                if(table_aDropTargets[nTarget] != table_divDrag.oSrc)
                    table_aDropTargets[nTarget].className = "table_drag_dst";
                break;
                }
            }
        
        return false;
        }
    }
    
function OnDragStop(eEvent)
    {
    if(table_divDrag)
        {
        if(table_nDropTarget != -1)
            {
            table_aDropTargets[table_nDropTarget].className = table_oDropTarget.className;
            table_divDrag.oSrc.className = table_divDrag.classOriginal;
            
            if(table_divDrag.oSrc != table_aDropTargets[table_nDropTarget])
                SwapNode(table_divDrag.oSrc, table_aDropTargets[table_nDropTarget]);
            }
        
        document.body.removeChild(table_divDrag);
        table_divDrag = null;
        table_aDropTargets.length = 0;
            
        if(document.removeEventListener)
            {
            document.removeEventListener("mousemove", OnDrag, true);
            document.removeEventListener("mouseup", OnDragStop, true);
            }
        else
            {
            document.detachEvent("onmousemove", OnDrag);
            document.detachEvent("onmouseup", OnDragStop);
            }
            
        //PageMethods.DropNode();
        }
    }
    
function OnDropNodeSucess(strMsg)
	{
	if(GetCookieValue("Checker", "") == "1")
		document.getElementById(strMsgCtrlID).style.display = "none";
	}

function OnDragStart(oSrc, eEvent, strStyle)
    {
    if(table_divDrag == null)
        {
        var objDragCoords = GetDragCoords(eEvent);
        var strInnerHTML = oSrc.innerHTML;
        var eTable, aeDropTargets;
        
        if(oSrc.nodeName == "TR")
            eTable = oSrc.parentNode;
        else
            eTable = oSrc.parentNode.parentNode;
          
        strInnerHTML = strInnerHTML.replace("id=\"", "id=\"Drag", "gi");
        strInnerHTML = strInnerHTML.replace("name=\"", "name=\"Drag", "gi");
        strInnerHTML = "<table class=\"" + strStyle + "\" style=\"width:100%;border-collapse:collapse;\"><tr" + ((oSrc.nodeName == "TR") ? " class=\"" + oSrc.className + "\">" + strInnerHTML : "><td class=\"" + oSrc.className + "\">" + strInnerHTML + "</td>") + "</tr></table>";
            
        table_divDrag = document.createElement("div");
        document.body.appendChild(table_divDrag);
        table_divDrag.oSrc = oSrc;
        table_divDrag.classOriginal = oSrc.className;
        table_divDrag.offset = GetDragOffset(oSrc);
        table_divDrag.style.position = "absolute";
        table_divDrag.style.left = table_divDrag.offset.nX + "px";
        table_divDrag.style.top = table_divDrag.offset.nY + "px";
        table_divDrag.style.width = oSrc.offsetWidth + "px";
        table_divDrag.style.height = oSrc.offsetHeight + "px";
        table_divDrag.style.display = "none";
        table_divDrag.innerHTML = strInnerHTML;
        if(oSrc.style.backgroundColor) table_divDrag.style.backgroundColor = oSrc.style.backgroundColor;
        if(oSrc.style.backgroundImage) table_divDrag.style.backgroundImage = oSrc.style.backgroundImage;
        
        table_divDrag.offset.nX = (objDragCoords.nX - table_divDrag.offset.nX);
        table_divDrag.offset.nY = (objDragCoords.nY - table_divDrag.offset.nY);
            
        aeDropTargets = eTable.getElementsByTagName(oSrc.nodeName);
        for(nTargets = 0; nTargets < aeDropTargets.length; nTargets++)
            AddDropTargets(aeDropTargets[nTargets]);
            
        oSrc.className = "table_drag_src";
        
        if(document.addEventListener)
            {
            document.addEventListener("mousemove", OnDrag, true);
            document.addEventListener("mouseup", OnDragStop, true);
            }
        else
            {
            document.attachEvent("onmousemove", OnDrag);
            document.attachEvent("onmouseup", OnDragStop);
            }
        }
    }

function DragNode(eEvent, strType, strStyle)
    {
    eEvent = eEvent || window.event;
    
    var strNodeName;
    switch(strType)
        {
        case "rows":    
            strNodeName = "TR";
            break;
        case "cells":
            strNodeName = "TD";
            break;
        default:
            return;
        }
    
    var oSrc = eEvent.target || window.event.srcElement;
    while(oSrc.nodeName != strNodeName && oSrc.parentNode)
        oSrc = oSrc.parentNode;
    
    OnDragStart(oSrc, eEvent, strStyle);
    return OnDrag(eEvent);
    }
    
if(!Array.indexOf)
    {
    Array.prototype.indexOf = function(oSrc, nStart)
        {
        for(var nIndex = (nStart || 0); nIndex < this.length; nIndex++)
            {
            if(this[nIndex] == oSrc)
                return nIndex;
            }
            
        return -1;
        }
    }
    
function OnPrintCheck(strPrintID, strCheckID, strHiddenID)
    {
    var chkPrintID = document.getElementById(strCheckID);
    var hidPrintIDs = document.getElementById(strHiddenID);
    
    var bChecked = chkPrintID.checked;
    var strPrintIDs = hidPrintIDs.value.toString();
    var astrPrintIDs = [];
    
    if(strPrintIDs != "")
        {
        var nPrintIDs = 0;
        if(strPrintID != "")
            nPrintIDs = strPrintID.split(",").length;
        
        var strSplit = "";
        var nDelimeter = 0;
        var nStart = -1;
        var nEnd = -1;
        var nLen = strPrintIDs.length;
        while(nEnd < nLen)
            {
            nStart = nEnd + 1;
            nEnd = strPrintIDs.indexOf(",", nStart);
            if(nEnd == -1) nEnd = nLen;
            
            strSplit += strPrintIDs.substring(nStart, nEnd);
            nDelimeter++;
            if(nDelimeter == nPrintIDs)
                {
                nDelimeter = 0;
                astrPrintIDs.push(strSplit);
                strSplit = "";
                }
            else
                strSplit += ",";    
            }
        }
    
    var nPrintIndex = astrPrintIDs.indexOf(strPrintID);
    if(nPrintIndex == -1 && bChecked)
        astrPrintIDs.push(strPrintID);
    else if(nPrintIndex != -1 && !bChecked)
        astrPrintIDs.splice(nPrintIndex, 1);
        
    hidPrintIDs.value = astrPrintIDs.join(",");
    return true;
    }
    
var g_wndPrint = null;
var g_nPrintTimer = -1;

function OnPrintOut(strURL, strHiddenID)
    {
    var hidPrintIDs = document.getElementById(strHiddenID);
    
    if(hidPrintIDs.value == "")
        return false;
        
    g_wndPrint = window.open(strURL + '?DATA=' + hidPrintIDs.value,'','toolbar=0,scrollbars=1,status=0');
    g_nPrintTimer = window.setTimeout("OnPrintReady();", 500);
    return false;
    }
    
function OnPrintReady()
    {
    window.clearTimeout(g_nPrintTimer);
    g_nPrintTimer = -1;
    
    g_wndPrint.focus();
    g_wndPrint.print();
    g_wndPrint.close();
    g_wndPrint = null;
    }
// -->