﻿var xhr;
var lastPage;

function getHTMLBlock(url,tagid,dest,dvload)
{   
    lastPage = url;
    requesturl = url;
    try 
    {
        xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
        try
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e)
        {
            xhr = false;
        }
    }
    
    if (!xhr && typeof XMLHttpRequest != 'undefined')
    {
        xhr = new XMLHttpRequest();
    }

    xhr.open("GET", requesturl + "&timestamp=" + new Date().getTime());
    xhr.onreadystatechange = function() {
        if (xhr.readyState != 4) return;
        var content = xhr.responseText;
        if (tagid)
        { content = getHTMLByID(content, tagid); }
        if (content.indexOf('</form>') != -1) {
            content = content.replace(/<form/g, '<div');
            content = content.replace(/form>/g, 'div>');
        }
        dest.innerHTML = content;
        var scribs = dest.getElementsByTagName("script");
        for (var s = 0; s < scribs.length; s++) {
            try {
                if (scribs[s].name == "registerAJAX") {
                    eval(scribs[s].innerHTML);
                }
            } catch (err) { }
        }
                var appendedJS = getHTMLByID(content, 'registerAJAX');
                if (appendedJS != "" && document.getElementById('appendJS')) {
                    head = document.getElementsByTagName('HEAD')[0];
                    JSAdd = document.createElement('SCRIPT');
                    JSAdd.type = 'text/javascript';
                    JSAdd.text = appendedJS;
                    head.appendChild(JSAdd);
                    //Hack for letting the news accordian exist within the tab parent
                    if (appendedJS.indexOf('initAccordian') != -1)
                    { setTimeout('initAccordian()', 1000); }
                }
                dvload.style.display = 'none';
    }
    
    xhr.send(null);
}


function getHTMLByID(text, id)
{
	// search for id:
	var idpos = text.indexOf("id=\""+id+"\"");
        var idtag = text.substring(text.substring(0, idpos).lastIndexOf("<")+1, idpos).split(" ");
	for (i =0; i < idtag.length; i++)
		if(idtag[i] != "")
		{
			idtag = idtag[i];
			break;
		}
	idpos = text.indexOf(">", idpos)+1;
	// search endtag:
	var alltags = text.substring(idpos).split(idtag);
	var open = 1;
        for (i=0; i < alltags.length; i++)
        {
		// look for opening AND closing
		if (alltags[i].charAt(alltags[i].length-1) == '<')
			open++;
		if (alltags[i].charAt(alltags[i].length-1) == '/')
			open--;

		if (open == 0)
		{
			text = "";
			for (j=0; j <= i; j++)
				text  += alltags[j] + idtag;
			break;
		}
  	}
	return text.substring(0, text.lastIndexOf('<'));
}

function popEditMenu(menu,block)
{
    menu.style.top = findPos(block)[1] + "px";
    menu.style.left = findPos(block)[0] + "px";
    menu.style.display = "block";
}
function hideEditMenu(menu)
{
    if (document.getElementById('dvUCList').style.display != "block")
    {menu.style.display = "none";}
}

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 loadUCList(ico,loc)
{
    document.getElementById('dvUCList').loc = loc;
    document.getElementById('dvUCList').style.display = "block";
    document.getElementById('dvUCList').style.top = findPos(ico)[1] + "px";
    document.getElementById('dvUCList').style.left = findPos(ico)[0] + "px";
}
function hoverEdit(uc,loc,con,cid)
{
    if (!dragapproved && document.getElementById('dvEditMask'))
    {
        var mask = document.getElementById('dvEditMask');
        uc.style.float = "none";
        mask.style.display = 'block';
        
        if (uc.offsetHeight == 0) {
            uc.style.float = "left";
            if (uc.offsetHeight == 0) {
                uc.style.float = "right";
                if (uc.offsetHeight == 0) {
                    uc.style.float = "none";
                    uc.style.height = "100px";
                }
            }
        }
        mask.style.width = uc.offsetWidth + "px";
        mask.style.height = uc.offsetHeight + "px";
        mask.style.top = findPos(uc)[1] + "px";
        mask.style.left = findPos(uc)[0] + "px";
        mask.loc=loc;
        mask.con=con;
        mask.cid=cid;
    }
}

//This is the DRAG handler

var dragapproved=false
var dobject=null;
var dragx=0;
var dragy=0;
var temp1=0;
var temp2=0;
var swap;
function move(e)
{
    if (dragapproved)
    {
        var evt = (e) ? e : event;
        swap = (evt.target) ? evt.target : evt.srcElement;
        //If not using a drag icon force pointer to left corner
        if (dobject.childNodes[0].className == "DragIcon")
        {
            dobject.style.left=(temp1 + evt.clientX + 15 - dragx) + 'px';
            dobject.style.top=(temp2 + evt.clientY + 15 - dragy) + 'px';
        }
        else
        {
            dobject.style.left=(evt.clientX + 5) + 'px';
            dobject.style.top=(evt.clientY + 5) + 'px';
        }
        
        
        //Drag and drop for user controls and content
        if (swap.className == "dropBox")
        {
            document.getElementById('dvEditMask').style.cursor = 'pointer';
            document.getElementById('dvEditMask').did = swap.getAttribute('did');
            document.getElementById('dvEditMask').newloc = swap.getAttribute('newloc');
            document.getElementById('dvEditMask').dcon = swap.getAttribute('dcon');
//            setOpacity(swap, 50)
        }
        //Must be dragging menu items
        else if ((swap.className == "DragBox" || swap.className == "ContainerHead") && (document.getElementById(dobject.cid).className != "ContainerHead"))
        {
            swap.parentNode.insertBefore(document.getElementById(dobject.cid),swap.nextSibling);
            document.getElementById(dobject.cid).style.visibility = "hidden";
            document.getElementById('dvItem').innerHTML = document.getElementById(dobject.cid).innerHTML;
        }
        //must be dragging menu containers
        else if (swap.className == "ContainerHead" && document.getElementById(dobject.cid).className == "ContainerHead")
        {
            swap.parentNode.parentNode.parentNode.insertBefore(document.getElementById(dobject.cid).parentNode.parentNode,swap.parentNode.parentNode);
            document.getElementById('dvItem').innerHTML = document.getElementById(dobject.cid).innerHTML;
        }
        //must be dragging to empty menu containers
        else if ((swap.className == "MenuBlock" || swap == document.getElementById('dvPad')) && document.getElementById(dobject.cid).className == "ContainerHead")
        {
            swap.parentNode.insertBefore(document.getElementById(dobject.cid).parentNode.parentNode,swap.nextSibling);
            document.getElementById('dvItem').innerHTML = document.getElementById(dobject.cid).innerHTML;
        }
        //must be dragging over an item that can't be dropped into
        else
        {
            document.getElementById('dvEditMask').style.cursor = 'not-allowed';
            document.getElementById('dvEditMask').did = null;
            document.getElementById('dvEditMask').newloc = null;
            document.getElementById('dvEditMask').dcon = null;

//            var drops = getElementsByClassName('dropBox', 'div');
//            for (var d = 0; d < drops.length; d++) {
//                setOpacity(drops[d], 1);
//            }
        }
        return false;
    }

}

function dragMe(e)
{   
    var evt = (e) ? e : event;
    dobject = evt.target != null ? evt.target.parentNode : evt.srcElement.parentNode;
    if ((evt.button == 1 && window.event != null || evt.button == 0) && 
        dobject.className == 'editMask')
    {
        dragapproved = true;
        temp1=dobject.offsetLeft;
        temp2=dobject.offsetTop;
        dragx=evt.clientX;
        dragy = evt.clientY;
        var dropBoxes = getElementsByClassName("dropBox", "div");
        for (var i = 0; i < dropBoxes.length; i++) {
            dropBoxes[i].style.display = "block";
        }
        var modules = getElementsByClassName("UCSelect", "div");
        for (var i = 0; i < modules.length; i++) {
            modules[i].style.height = "100px";
            modules[i].style.overflow = "hidden";
        }
        document.onmousemove = move;
        document.onmouseup = dragDrop;
        document.body.focus();
        document.onselectstart = function () { return false; };
        dobject.ondragstart = function() { return false; };
        return false;
    }
    else if (evt.button == 2 && dobject.className == 'editMask') 
    {
      GetMenuItem();
      return false;
    }
}

function dragDrop()
{
    dragapproved=false;
    document.onmouseup=null;
    document.onmousemove = null;
    var dropBoxes = getElementsByClassName("dropBox", "div");
    for (var i = 0; i < dropBoxes.length; i++) {
        dropBoxes[i].style.display = "none";
    }
    var modules = getElementsByClassName("UCSelect", "div");
    for (var i = 0; i < modules.length; i++) {
        modules[i].style.height = "auto";
        modules[i].style.overflow = "visible";
    }
    if(document.getElementById(document.getElementById('dvEditMask').cid))
    {document.getElementById(document.getElementById('dvEditMask').cid).style.visibility = "visible";}
    document.getElementById('dvEditMask').style.display = "none";
    document.getElementById('dvEditMask').style.cursor = "pointer";
    if(document.getElementById('dvItem'))
    {document.getElementById('dvItem').innerHTML = "";}
    reorderItem();
}
function setOpacity(d, op) {
        d.style.opacity = "." + op;
        d.style.filter = 'alpha(opacity=' + op + ', FinishOpacity=' + op + ', Style=1));';
}
function hoverTo(e)
{
    var mask = document.getElementById('dvEditMask');
    if(!dragapproved)
    {
        var evt = (e) ? e : event;
        if (evt.relatedTarget)
        {
            if (evt.relatedTarget.id != "dragBtn" && evt.relatedTarget.id != "dvEditMask")
            {
                mask.style.display="none";
            }
        }
        else if (evt.toElement)
        {
            if (evt.toElement.id != "dragBtn" && evt.toElement.id != "dvEditMask")
            {
                mask.style.display="none";
            }
        }
    }
}

function getElementsByClassName(classname, node)  
{   
    var a = [];    
    var re = new RegExp(classname);  
    var els = document.getElementsByTagName(node);
    for(var i=0,j=els.length; i<j; i++)
    {      
        if(re.test(els[i].className))a.push(els[i]);    
    }
    return a;
}




