﻿function ShowDesigner()
{
    document.getElementById("designerdiv").style.zIndex=2;
    document.getElementById("sourcecodediv").style.zIndex=1;   
    document.getElementById("rulesdiv").style.zIndex=1; 
    document.getElementById("codediv").style.zIndex=1;      

    document.getElementById("designertabdiv").style.backgroundColor = "#ffffff";
    document.getElementById("sourcecodetabdiv").style.backgroundColor = "transparent";  
    document.getElementById("rulestabdiv").style.backgroundColor = "transparent"; 
    document.getElementById("codetabdiv").style.backgroundColor = "transparent";    
}

function ShowSourceCode()
{
    document.getElementById("designerdiv").style.zIndex=1;
    document.getElementById("rulesdiv").style.zIndex=1;    
    document.getElementById("sourcecodediv").style.zIndex=2;    
    document.getElementById("codediv").style.zIndex=1;      

    document.getElementById("designertabdiv").style.backgroundColor = "transparent";
    document.getElementById("rulestabdiv").style.backgroundColor = "transparent";    
    document.getElementById("sourcecodetabdiv").style.backgroundColor = "#ffffff";
    document.getElementById("codetabdiv").style.backgroundColor = "transparent";    

    UpdateSourceCode()   
}

function ShowRules()
{
    document.getElementById("designerdiv").style.zIndex=1;
    document.getElementById("rulesdiv").style.zIndex=2;      
    document.getElementById("sourcecodediv").style.zIndex=1;    
    document.getElementById("codediv").style.zIndex=1;      

    document.getElementById("designertabdiv").style.backgroundColor = "transparent";
    document.getElementById("rulestabdiv").style.backgroundColor = "#ffffff";    
    document.getElementById("sourcecodetabdiv").style.backgroundColor = "transparent"; 
    document.getElementById("codetabdiv").style.backgroundColor = "transparent";    

}

function ShowCode()
{
    document.getElementById("designerdiv").style.zIndex=1;
    document.getElementById("rulesdiv").style.zIndex=1;      
    document.getElementById("sourcecodediv").style.zIndex=1;    
    document.getElementById("codediv").style.zIndex=2;      
    
    document.getElementById("designertabdiv").style.backgroundColor = "transparent";
    document.getElementById("rulestabdiv").style.backgroundColor = "transparent";    
    document.getElementById("sourcecodetabdiv").style.backgroundColor = "transparent"; 
    document.getElementById("codetabdiv").style.backgroundColor = "#ffffff";    
    DisplayEncodedCode();
}

function ShowErrors()
{
    document.getElementById("errorList").style.zIndex=2;
    document.getElementById("warningList").style.zIndex=1;      
    document.getElementById("errorListTab").style.backgroundColor = "#ffffff";    
    document.getElementById("warningListTab").style.backgroundColor = "transparent";  
}

function ShowWarnings()
{
    document.getElementById("errorList").style.zIndex=1;
    document.getElementById("warningList").style.zIndex=2;      
    document.getElementById("errorListTab").style.backgroundColor = "transparent";    
    document.getElementById("warningListTab").style.backgroundColor = "#ffffff";  
}

function getAbsoluteLeft(o) {
	var cumOffset = 0;
    offsetElement = o;
    while(offsetElement!=workflowActivity.element) 
    {
            if (offsetElement.className=="SequenceActivity" && offsetElement.parentElement.tagName=="TD")
            {
            }
            else
            {
                cumOffset = cumOffset + offsetElement.offsetLeft;
            }
            offsetElement = offsetElement.parentElement;
    }
	return o.offsetLeft + cumOffset+Quanticks.getWorkflowView().offsetLeft+document.getElementById("mapdiv").offsetLeft;
}

function getAbsoluteTop(o) {
	var cumOffset = 0;
    offsetElement = o;
    while(offsetElement!=workflowActivity.element) 
    {
            if (offsetElement.className=="SequenceActivity" && offsetElement.parentElement.tagName=="TD")
            {
            }
            else
            {
                cumOffset = cumOffset + offsetElement.offsetTop;
            }
            offsetElement = offsetElement.parentElement;
    }
	return o.offsetTop + cumOffset+Quanticks.getWorkflowView().offsetTop+document.getElementById("mapdiv").offsetTop;
}

function getAbsLeft(o) {
	oLeft = o.offsetLeft
	return oLeft
}

function getAbsTop(o) {
	oTop = o.offsetTop
	return oTop
}

function setPosition(o,oLeft,oTop) {
	o.style.top = oTop + "px"
	o.style.left = oLeft + "px"
}

function sldMouseDown(e)
{
		
	if (!e) {e = window.event}
	var skipEvent = false
	var srcClass = e.srcElement.className
	if (srcClass == "contextmenuitem" || srcClass == "bar" || srcClass == "activity" || srcClass == "idlabel" || srcClass == "jack" || srcClass == "bind")
	    skipEvent = true
 
    if (e.srcElement.tagName=="TD")
        if (e.srcElement.children[0]&&e.srcElement.children[0].className == "idlabel")
            skipEvent = true
         
    if (e.srcElement.tagName=="IMG")
        if (e.srcElement.parentElement.nextSibling !=null)
        {
            if (e.srcElement.parentElement.nextSibling.children[0]==null)
            {
                skipEvent = true           
            }
            else
            if (e.srcElement.parentElement.nextSibling.children[0].className = "idlabel")
            {
                skipEvent = true
            }
        }
        
    if (skipEvent)
        return
  
	Quanticks._activityFactory._Select(workflow)
	
	doDrag=true
	o=document.getElementById("mapdiv")
	sldLeft=getAbsLeft(o)
	sldTop=getAbsTop(o)
	sldMouseLeft=e.clientX-sldLeft
	sldMouseTop=e.clientY-sldTop	
	document.onmousemove = sldMouseMove
}

function sldMouseUp(e)
{
	doDrag=false
    updateScrollArrows()
}

function sldMouseMove(e)
{
	if (!e) {e = window.event}		
	if (doDrag)
	{
		o=document.getElementById("mapdiv")
		setPosition(o,e.clientX-sldMouseLeft,e.clientY-sldMouseTop)
		return false
	}	
}

function startScrollDown()
{
    doDrag=false
    scrollDownTimerID = window.setInterval("scrollDown()", 100);
}

function scrollDown()
{
		var o = document.getElementById("mapdiv")
		var designerdiv = document.getElementById("designerdiv")
		sldLeft=getAbsLeft(o)
	    sldTop=getAbsTop(o)
	    var delta = sldTop+o.clientHeight - designerdiv.clientHeight
	    if (delta > 0)
		    setPosition(o,sldLeft,sldTop-((delta > 10)?10:delta))
		else
		    updateScrollArrows()
}

function stopScrollDown()
{
    clearInterval(scrollDownTimerID)
    updateScrollArrows()
}

function startScrollUp()
{
    doDrag=false
    scrollUpTimerID = window.setInterval("scrollUp()", 100);
}

function scrollUp()
{
		var o = document.getElementById("mapdiv")
		var designerdiv = document.getElementById("designerdiv")
		sldLeft=getAbsLeft(o)
	    sldTop=getAbsTop(o)
	    var delta = designerdiv.clientTop - sldTop -1
	    if (delta > 0)
		    setPosition(o,sldLeft,sldTop+((delta > 10)?10:delta))
		else
		    updateScrollArrows()
}

function stopScrollUp()
{
    clearInterval(scrollUpTimerID)
    updateScrollArrows()
}


function startScrollLeft()
{
    doDrag=false
    scrollLeftTimerID = window.setInterval("scrollLeft()", 100);
}

function scrollLeft()
{
		var o = document.getElementById("mapdiv")
		var designerdiv = document.getElementById("designerdiv")
		sldLeft=getAbsLeft(o)
	    sldTop=getAbsTop(o)
	    var delta = designerdiv.clientLeft - sldLeft - 1
	    if (delta > 0)
		    setPosition(o,sldLeft+((delta > 10)?10:delta),sldTop)
		else
		    updateScrollArrows()
}

function stopScrollLeft()
{
    clearInterval(scrollLeftTimerID)
    updateScrollArrows()
}


function startScrollRight()
{
    doDrag=false
    scrollRightTimerID = window.setInterval("scrollRight()", 100);
}

function scrollRight()
{
		var o = document.getElementById("mapdiv")
		var designerdiv = document.getElementById("designerdiv")
		sldLeft=getAbsLeft(o)
	    sldTop=getAbsTop(o)
	    var delta = sldLeft+o.clientWidth - designerdiv.clientWidth
	    if (delta > 0)
		    setPosition(o,sldLeft-((delta > 10)?10:delta),sldTop)
		else
		    updateScrollArrows()
}

function stopScrollRight()
{
    clearInterval(scrollRightTimerID)
    updateScrollArrows()
}

function updateScrollArrows()
{
	    var downA = document.getElementById("scrolldownarrow")
	    var upA = document.getElementById("scrolluparrow")
	    var leftA = document.getElementById("scrollleftarrow")
	    var rightA = document.getElementById("scrollrightarrow")
	   
		var o = document.getElementById("mapdiv")
		var designerdiv = document.getElementById("designerdiv")
		sldLeft=getAbsLeft(o)
	    sldTop=getAbsTop(o)	   
	    
	    downA.style.display="none"
	    upA.style.display="none"
	    leftA.style.display="none"
	    rightA.style.display="none"
	    
	    if (sldTop+o.clientHeight > designerdiv.clientHeight)
		    downA.style.display="block"
		    
	    if (sldTop < designerdiv.clientTop-1)
		    upA.style.display="block"

	    if (sldLeft < designerdiv.clientLeft-1)
            leftA.style.display="block"

	    if (sldLeft+o.clientWidth > designerdiv.clientWidth)
            rightA.style.display="block"
}

var scrollDownTimerID
var scrollUpTimerID
var scrollLeftTimerID
var scrollRightTimerID

var sldValue=0
var sldTop=0
var sldLeft=0
var doDrag=false
var sldMouseLeft=0
var sldMouseTop=0

var TscrollDownTimerID
var TscrollUpTimerID
var TsldTop=0


function TstartScrollDown()
{
    TscrollDownTimerID = window.setInterval("TscrollDown()", 100);
}

function TscrollDown()
{
		var o = document.getElementById("ToolBox1")
		var toolboxpanel = document.getElementById("ToolBoxPanel");
	    TsldTop=getAbsTop(o)
	    var delta = TsldTop+o.clientHeight - toolboxpanel.clientHeight + 10;
	    if (delta > 0)
            o.style.top = TsldTop-((delta > 10)?10:delta);
}

function TstopScrollDown()
{
    clearInterval(TscrollDownTimerID)
}

function TstartScrollUp()
{
    TscrollUpTimerID = window.setInterval("TscrollUp()", 100);
}

function TscrollUp()
{

		var o = document.getElementById("ToolBox1")
		var toolboxpanel = document.getElementById("ToolBoxPanel");
	    TsldTop=getAbsTop(o)
	    var delta = toolboxpanel.clientTop - TsldTop +10
	    if (delta > 0)
		    o.style.top = TsldTop+((delta > 10)?10:delta);
}

function TstopScrollUp()
{
    clearInterval(TscrollUpTimerID)
}