﻿
// Global holds reference to selected element
var selectedObj;

var selectedObjZIndex;   

// Globals hold location of click relative to element
var offsetX, offsetY;


var DHTMLAPI =
{   

    init : function( ) {
        if (document.images) {
            isCSS = (document.body && document.body.style) ? true : false;
            isW3C = (isCSS && document.getElementById) ? true : false;
            isIE4 = (isCSS && document.all) ? true : false;
            isNN4 = (document.layers) ? true : false;
            isIE = (navigator.appName == "Microsoft Internet Explorer");
            isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0) ? 
                true : false;
        }
        
        window.onresize = handleResize;
        window.onscroll = handleScroll;
    },
    
    shiftTo : function (obj, x, y) 
    {
        var theObj = this.getObject(obj);
        if (theObj) {
            if (isCSS) {
                // equalize incorrect numeric value type
                var units = (typeof theObj.left == "string") ? "px" : 0;
                theObj.left = x + units;
                theObj.top = y + units;
            } else if (isNN4) {
                theObj.moveTo(x,y)
            }
        }
    },
    
    getObject : function (obj) {
        var theObj = this.getRawObject(obj);
        if (theObj && isCSS) {
            theObj = theObj.style;
        }
        return theObj;
    },  
    
    show : function (obj) {
        var theObj = this.getObject(obj);
        if (theObj) {
            theObj.visibility = "visible";
        }
    },
       
    // Set the visibility of an object to hidden
    hide : function(obj) {
        var theObj = this.getObject(obj);
        if (theObj) {
            theObj.visibility = "hidden";
        }
    },
    
	centerOnWindow: function (elemID) {
	
	    var obj = this.getRawObject(elemID);

        var scrollX = 0, scrollY = 0;
        if (document.body && typeof document.body.scrollTop != "undefined") {
            scrollX += document.body.scrollLeft;
            scrollY += document.body.scrollTop;
            if (document.body.parentNode && 
                typeof document.body.parentNode.scrollTop != "undefined") {
                scrollX += document.body.parentNode.scrollLeft;
                scrollY += document.body.parentNode.scrollTop;
            }
        } else if (typeof window.pageXOffset != "undefined") {
            scrollX += window.pageXOffset;
            scrollY += window.pageYOffset;
        }
        var x = Math.round((this.getInsideWindowWidth( )/2) - 
            (this.getObjectWidth(obj)/2)) + scrollX;
        var y = Math.round((this.getInsideWindowHeight( )/2) - 
            (this.getObjectHeight(obj)/2)) + scrollY;
        this.shiftTo(obj, x, y);
        this.show(obj);
    },
    
    // sets object size as window
    makeFullWindow : function (elemID)
    {
        var obj = this.getRawObject(elemID);
        obj.style.width = this.getInsideWindowWidth() + "px";
        obj.style.height = this.getInsideWindowHeight() + "px";
        
    },
    
    getInsideWindowHeight : function ( ) 
    {    
        if (window.innerHeight) {
            return window.innerHeight;
        } else if (isIE6CSS) {
            // measure the html element's clientHeight
            return document.body.parentElement.clientHeight;
        } else if (document.body && document.body.clientHeight) {
            return document.body.clientHeight;
        }
        return 0;
    },
    
    getInsideWindowWidth : function ( ) 
    {
        if (window.innerWidth) {
            return window.innerWidth;
        } else if (isIE6CSS) {
            // measure the html element's clientWidth
            return document.body.parentElement.clientWidth;
        } else if (document.body && document.body.clientWidth) {
            return document.body.clientWidth;
        }
        return 0;
    },
    
    getObjectWidth: function (obj)  
    {
        var elem = this.getRawObject(obj);
        var result = 0;
        if (elem.offsetWidth) {
            result = elem.offsetWidth;
        } else if (elem.clip && elem.clip.width) {
            result = elem.clip.width;
        } else if (elem.style && elem.style.pixelWidth) {
            result = elem.style.pixelWidth;
        }
        return parseInt(result);
    },
       
    // Retrieve the rendered height of an element
     getObjectHeight : function (obj)  {
        var elem = this.getRawObject(obj);
        var result = 0;
        if (elem.offsetHeight) {
            result = elem.offsetHeight;
        } else if (elem.clip && elem.clip.height) {
            result = elem.clip.height;
        } else if (elem.style && elem.style.pixelHeight) {
            result = elem.style.pixelHeight;
        }
        return parseInt(result);
    },
    
    getRawObject : function (obj) {
        var theObj;
        if (typeof obj == "string") {
            if (isW3C) {
                theObj = document.getElementById(obj);
            } else if (isIE4) {
                theObj = document.all(obj);
            } else if (isNN4) {
                theObj = seekLayer(document, obj);
            }
        } else {
            // pass through object reference
            theObj = obj;
        }
        return theObj;
    },
    

   
    // Set global reference to element being engaged and dragged
    setSelectedElem : function (evt) 
    {
        var target = (evt.target) ? evt.target : evt.srcElement;
        var divID;
        if (target.id.indexOf("_dragHeader")!=-1)
        {
            divID=target.id.replace("_dragHeader","");
        }
        if (divID) {
            if (document.layers) {
                selectedObj = document.layers[divID];
            } else if (document.all) {
                selectedObj = document.all(divID);
            } else if (document.getElementById) {
                selectedObj = document.getElementById(divID);
            }
            
            selectedObjZIndex=selectedObj.style.zIndex;
            
            DHTMLAPI.setZIndex(selectedObj, selectedObjZIndex+10);
            return;
        }
        selectedObj = null;
        return;
    },
       
    // Turn selected element on
     engage : function (evt) {
        evt = (evt) ? evt : event;
        DHTMLAPI.setSelectedElem(evt);
        if (selectedObj) {
            if (document.body && document.body.setCapture) {
                // engage event capture in IE/Win
                document.body.setCapture();
            }
            if (evt.pageX) {
                offsetX = evt.pageX - ((selectedObj.offsetLeft) ? 
                          selectedObj.offsetLeft : selectedObj.left);
                offsetY = evt.pageY - ((selectedObj.offsetTop) ? 
                          selectedObj.offsetTop : selectedObj.top);
            } else if (typeof evt.offsetX != "undefined") {
                offsetX = evt.offsetX - ((evt.offsetX < -2) ? 
                          0 : document.body.scrollLeft);
                offsetX -= (document.body.parentElement && 
                         document.body.parentElement.scrollLeft) ? 
                         document.body.parentElement.scrollLeft : 0
                offsetY = evt.offsetY - ((evt.offsetY < -2) ? 
                          0 : document.body.scrollTop);
                offsetY -= (document.body.parentElement && 
                         document.body.parentElement.scrollTop) ? 
                         document.body.parentElement.scrollTop : 0
            } else if (typeof evt.clientX != "undefined") {
                offsetX = evt.clientX - ((selectedObj.offsetLeft) ? 
                          selectedObj.offsetLeft : 0);
                offsetY = evt.clientY - ((selectedObj.offsetTop) ? 
                          selectedObj.offsetTop : 0);
            }
            return false;
        }
    },
       
    // Drag an element
    dragIt : function (evt) {
        evt = (evt) ? evt : event;
        if (selectedObj) {
            if (evt.pageX) {
                DHTMLAPI.shiftTo(selectedObj, (evt.pageX - offsetX), (evt.pageY - offsetY));
            } else if (evt.clientX || evt.clientY) {
                DHTMLAPI.shiftTo(selectedObj, (evt.clientX - offsetX), (evt.clientY - offsetY));
            }
            evt.cancelBubble = true;
            return false;
        }
    },
       
    // Turn selected element off
    release : function(evt) {
        if (selectedObj) {
            DHTMLAPI.setZIndex(selectedObj, selectedObjZIndex);
            if (document.body && document.body.releaseCapture) {
                // stop event capture in IE/Win
                document.body.releaseCapture();
            }
            selectedObj = null;
        }
    },
       
    // Assign event handlers used by both Navigator and IE
    initDrag : function( ) {
        if (document.layers) {
            // turn on event capture for these events in NN4 event model
            document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
            return;
        } else if (document.body & document.body.addEventListener) {
            // turn on event capture for these events in W3C DOM event model
            document.addEventListener("mousedown", engage, true);
            document.addEventListener("mousemove", dragIt, true);
            document.addEventListener("mouseup", release, true);
            return;
        }
        document.onmousedown = DHTMLAPI.engage;
        document.onmousemove = DHTMLAPI.dragIt;
        document.onmouseup = DHTMLAPI.release;
        return;
    },
    
    setZIndex : function (obj, zOrder) 
    {
        var theObj = this.getObject(obj);
        if (theObj) {
            theObj.zIndex = zOrder;
        }
    }

}

function handleResize( ) 
{
    DHTMLAPI.centerOnWindow("modalBlock");
    //DHTMLAPI.centerOnWindow("modalBlock_iframe");
    DHTMLAPI.makeFullWindow("modalBlock");
    //DHTMLAPI.makeFullWindow("modalBlock_iframe");
    
    DHTMLAPI.centerOnWindow("htmlPopup1");

}

function handleScroll( ) 
{
    DHTMLAPI.centerOnWindow("modalBlock");
    //DHTMLAPI.centerOnWindow("modalBlock_iframe");
  
    
}

function hideLayer(obj) 
{
    
    obj = (obj.id||obj.tagName)?obj:document.getElementById(obj);
    var objClassName = obj.className;
    if (obj.className.indexOf("opened")!=-1)
    {
        objClassName = objClassName.replace("opened","closed");
        obj.className=objClassName;
      
    }
    else if (obj.className.indexOf("closed")==-1)
    {
        objClassName+=" closed";
        obj.className=objClassName;
    }
    
}

function showLayer(obj) 
{
    obj = (obj.id||obj.tagName)?obj:document.getElementById(obj);
    var objClassName = obj.className;
    if (objClassName.indexOf("closed")!=-1)
    {
        
        objClassName = objClassName.replace("closed","opened");
        obj.className=objClassName;
        
    }
    else if (obj.className.indexOf("opened")==-1)
    {
        objClassName+=" opened";
        obj.className=objClassName;
    }
}


function $(_id) {
	return document.getElementById(_id);
}

