﻿var isiWindowOpen = true;
var iefixrecalled = false;

function hookEvent(element, eventName, callback) {
    if(typeof(element) == "string")
        element = document.getElementById(element);
    if(element == null)
        return;
    if(element.addEventListener)
        element.addEventListener(eventName, callback, false);
    else if(element.attachEvent)
        element.attachEvent("on" + eventName, callback);
}

function onDomReady(f) {
    if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", f, false);
    else if (document.all && !window.opera){
        document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>');
        var contentloadtag=document.getElementById("contentloadtag");
        contentloadtag.onreadystatechange=function(){
            if (this.readyState=="complete")
                f();
        }
    }
}

function cancelEvent(e) {
    if(!e)
        e = window.event;
    if(e.stopPropagation)
        e.stopPropagation();
    if(e.preventDefault)
        e.preventDefault();
    e.cancelBubble = true;
    e.cancel = true;
    e.returnValue = false;
    return false;
}

function addClass(element, c) {
    if(typeof(element) == "string")
        element = document.getElementById(element);
    if (!hasClass(element, c)) {
        element.className += element.className? ' ' + c : c;
    }
}

function removeClass(element, c) {
    if(typeof(element) == "string")
        element = document.getElementById(element);
    var rep = element.className.match(' ' + c) ? ' ' + c : c;
    element.className= element.className.replace(rep, '');
}

function hasClass(element, c) {
    if(typeof(element) == "string")
        element = document.getElementById(element);
    return new RegExp('\\b'+c+'\\b').test(element.className)
}

function setXY(element, x, y) {
    if(typeof(element) == "string")
        element = document.getElementById(element);
    element.style.left = x + "px";
    element.style.top = y + "px";
}

function getViewportSize() {
    var myWidth = 0, myHeight = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    return { width: myWidth, height: myHeight };
}

function getScrollOffset() {
    var scrOfX = 0, scrOfY = 0;
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    return { x: scrOfX, y: scrOfY };
}

function createCookie(name,value,days) {
    /*var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toGMTString();
    }*/
    document.cookie = name+"="+value+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}


function insertAdjacentElement(el, where, parsedNode) {
    switch (where){
        case 'beforeBegin':
            el.parentNode.insertBefore(parsedNode, el)
            break;
        case 'afterBegin':
            el.insertBefore(parsedNode, el.firstChild);
            break;
        case 'beforeEnd':
            el.appendChild(parsedNode);
            break;
        case 'afterEnd':
            if (el.nextSibling)
                el.parentNode.insertBefore(parsedNode, el.nextSibling);
            else
                el.parentNode.appendChild(parsedNode);
            break;
    }
}

function insertAdjacentHTML(el, where, htmlStr) {
    if (el.insertAdjacentHTML) {
        el.insertAdjacentHTML(where, htmlStr);
    } else {
        var r = el.ownerDocument.createRange();
        r.setStartBefore(el);
        var parsedHTML = r.createContextualFragment(htmlStr);
        insertAdjacentElement(el, where,parsedHTML)
    }
}

function getElementsByClassName(classname, node) {
    if(!node) node = document.getElementsByTagName("body")[0];
    var a = [];
    var els = node.getElementsByTagName("*");
    for(var i=0; i<els.length; i++)
        if (hasClass(els[i], classname))
            a.push(els[i]);
    return a;
}

function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return { x: curleft, y: curtop };
}

function getEventTarget(e) {
    var targ = null;
    if (e.target) targ = e.target;
    else if (e.srcElement) targ = e.srcElement;
    if (targ.nodeType == 3)
        targ = targ.parentNode;
    return targ;
}

function isNewISIFormat() {
    return hasClass(document.getElementById("isiPopup").parentNode, "headNeckIsi");
}

function adjustISIWindow() {
    var viewport = getViewportSize();
    var scroll = getScrollOffset();

    if (isNewISIFormat()) {
        var x = document.getElementById("content").offsetLeft + 40;
        var y = isiWindowOpen ?
                    viewport.height - 118 - isiMinimizedOffset() + scroll.y :
                    viewport.height - isiMinimizedOffset() + scroll.y;

        document.getElementById("isiPopup").style.height = isiWindowOpen ? "127px" : "23px";
    } else {
        //var x = (viewport.width - 735) / 2 + scroll.x - 7;
        var x = document.getElementById("container").offsetLeft + 164;
        var y = isiWindowOpen ?
                    viewport.height - 146 - isiMinimizedOffset() + scroll.y :
                    viewport.height - isiMinimizedOffset() + scroll.y;

        document.getElementById("isiPopup").style.height = isiWindowOpen ? "153px" : "23px";
    }
    
    if (!isiWindowOpen)
        document.getElementById("contentISI", document.body).scrollTop = 0;
    setXY("isiPopup", x, y);
    if (isiWindowOpen) {    
        removeClass("isiOpenClose", "minimized");        
        addClass("isiOpenClose", "maximized"); 
    } else {
        removeClass("isiOpenClose", "maximized");
        addClass("isiOpenClose", "minimized");
    }
}

function isiMinimizedOffset() {
    return window.innerWidth && window.innerWidth < 1077 ? 45 : 28;
    
}

function openCloseISIWindow(e) {
    if (isiWindowOpen) {
        var viewport = getViewportSize();
        var scroll = getScrollOffset();
        
        var x = (viewport.width - 270) / 2 + scroll.x;
        var y = viewport.height - 147 - 175 + scroll.y;
        setXY("isiWarningBox", x, y);                
        document.getElementById("isiWarningBox").style.display = "block";
        
        
        if (undefined != window.IEPNGFix) {
            if (!iefixrecalled) {
                iefixrecalled = true;
                IEPNGFix.update();
            }
        }
    } else {
    
        createCookie("isiState", "open", 99);
        isiWindowOpen = true;  
        adjustISIWindow();                
    }
    
    return cancelEvent(e);
}

function isiWarningOk() {
    document.getElementById("isiWarningBox").style.display = "none";    
    createCookie("isiState", "close", 99);
    isiWindowOpen = false;
    adjustISIWindow();
}

function isiWarningCancel() {
    document.getElementById("isiWarningBox").style.display = "none";
}

function residentButton() {
    hookEvent("usresidents", "mouseover", function() {
        addClass("a_usresidents", "on");
    });
    hookEvent("usresidents", "mouseout", function() {
        removeClass("a_usresidents", "on");
    });
}

function nonresidentButton() {
    hookEvent("nonresidents", "mouseover", function() {
        addClass("a_nonresidents", "on");
        addClass("notice", "onHover");
    });
    hookEvent("nonresidents", "mouseout", function() {
        removeClass("notice", "onHover");
        removeClass("a_nonresidents", "on");
    });
}

function bellsWhistles() {
    // Migrated from: $('a[rel="external"]').after('<img src="/images/widgets/widget-external-link-10.png" alt="external link" class="linkimg" />');
    var anchors = document.getElementsByTagName("a");
    for (var i = 0; i < anchors.length; i++) {
        var el = anchors[i];
        if (el.rel == "external") {
            insertAdjacentHTML(el, "afterEnd", '<img src="/images/widgets/widget-external-link-10.png" alt="external link" class="linkimg" />');
        }
    }
    
    // Migrated from: $('a[type="application/pdf"]').after('<img src="/images/widgets/icon-adobe.jpg" alt="Adobe PDF document" class="linkimg" />');
    for (var i = 0; i < anchors.length; i++) {
        var el = anchors[i];
        if (el.type == "application/pdf") {
            insertAdjacentHTML(el, "afterEnd", '<img src="/images/widgets/icon-adobe.jpg" alt="Adobe PDF document" class="linkimg" />');
        }
    }
    
    // Migrated from: $('a[type="application/word"]').after('<img src="/images/widgets/icon-word.jpg" alt="MS Word document" class="linkimg" />');
    for (var i = 0; i < anchors.length; i++) {
        var el = anchors[i];
        if (el.type == "application/word") {
            insertAdjacentHTML(el, "afterEnd", '<img src="/images/widgets/icon-word.jpg" alt="MS Word document" class="linkimg" />');
        }
    }

    // Migrated from: $('a.top').after('<img src="/images/widgets/to-top.png" alt="Back to top" class="linkimg" />'); 
    for (var i = 0; i < anchors.length; i++) {
        var el = anchors[i];
        if (hasClass(el, "top")) {
            insertAdjacentHTML(el, "afterEnd", '<img src="/images/widgets/to-top.png" alt="Back to top" class="linkimg" />');
        }
    }
    anchors = null;    

    // Migrated from: $('.glossary dt').append('<span>:</span>');
    var elements = getElementsByClassName("glossary");
    for (var i = 0; i < elements.length; i++) {
        var innerElements = elements[i].getElementsByTagName("dt");
        for(var j = 0; j < innerElements.length; j++)
            insertAdjacentHTML(innerElements[j], "beforeEnd", '<span>:</span>');
    }
    
    // Migrated from: $('fieldset label').append('<span>:</span>');
    // Migrated from: $('fieldset label.req').append('<b>*</b>');
    elements = document.getElementsByTagName("fieldset");
    for (var i = 0; i < elements.length; i++) {
        var innerElements = elements[i].getElementsByTagName("label");
        for(var j = 0; j < innerElements.length; j++) {
            var innerEl = innerElements[j];
            insertAdjacentHTML(innerEl, "beforeEnd", '<span>:</span>');
            if(hasClass(innerEl, "req"))
                insertAdjacentHTML(innerEl, "beforeEnd", '<b>*</b>');
        }
    }
    //Function is working incorrectly--doubling images under sub ULs
    // Migrated from: $('ul.no-bullets li a').before('<span>&raquo;</span>'); 
    elements = document.getElementsByTagName("ul");
    for (var i = 0; i < elements.length; i++) {
        var el = elements[i];
        if (hasClass(el, "no-bullets")) {
            var innerElements = el.getElementsByTagName("li");
            for(var j = 0; j < innerElements.length; j++) {
                var innerInnerElements = innerElements[j].getElementsByTagName("a");
                for(var k = 0; k < innerInnerElements.length; k++)
                    insertAdjacentHTML(innerInnerElements[k], "beforeBegin", '<span>&raquo;</span>');
            }
        }
    }    
}

function verifyNR() {
    if (!document.getElementById("Checkbox1").checked) {
         return false;
    }
}

function CancelNR() {
    removeClass("a_nonresidents", "on");
    removeClass("notice", "onHover");
}

function showYellowIntersitialPopup(event) {
    if (!event) event = window.event;
    var target = getEventTarget(event);
    var pos = findPos(target);
    var popup = document.getElementById("intersitialPopup");
    setXY(popup, pos.x + target.offsetWidth - 22, pos.y - popup.offsetHeight);
    popup.style.visibility = "visible";
}

var initFunction = function() { }
var sideEffects = function() { }

onDomReady(function() {
    initFunction();
    sideEffects();
    var tempNR = 0;
    residentButton();
    nonresidentButton();
    bellsWhistles();
    if (document.getElementById("isiPopup") != null) {
        if (readCookie("isiState") == "close") isiWindowOpen = false;
        adjustISIWindow();
        setTimeout(adjustISIWindow, 500);
        addClass("isiPopup", "floatPopup");
        document.getElementById("isiPopup").style.display = "block";
        hookEvent(window, "scroll", adjustISIWindow);
        hookEvent(window, "resize", adjustISIWindow);
        hookEvent("isiOpenClose", "click", openCloseISIWindow);
        hookEvent("isiOpenCloseBottom", "click", openCloseISIWindow);
        hookEvent("isiWarningCancel", "click", isiWarningCancel);
        hookEvent("isiWarningOk", "click", isiWarningOk);

        preloadImage = new Image(270, 147);
        preloadImage.src = "/images/bg/bg-warning-box.png";
    }

    var titleLinks = getElementsByClassName("findMoreInfoTitle");
    for (var i = 0; i < titleLinks.length; i++) {
        var anchors = titleLinks[i].getElementsByTagName("a");
        if (anchors != null && anchors.length > 0) {
           // hookEvent(anchors[0], "mouseover", showYellowIntersitialPopup);
           // hookEvent(anchors[0], "mouseout", function() { document.getElementById("intersitialPopup").style.visibility = "hidden"; });
        }
    }
});
