function CreateAtlasImage (sourceURL)
{
	var atlasImage = new Image();
	atlasImage.src = sourceURL;
	
}

function addLoadEvent(func) {
    var oldonload = window.onload;

    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function() {
            oldonload(); func()
        }
    }
}

function preparePrint() {
    if (!document.getElementById) return;
    var print_link = document.getElementById("print-button");
    if (print_link) {
        print_link.onclick = function() {
            window.print();
            return false;
        }
    }
}

addLoadEvent(preparePrint);

function prepareEmail() {
    if (!document.getElementById) return;
    var email_link = document.getElementById("email-button");
    if (email_link) {
        email_link.onclick = function() {
            mail_str = "mailto:?subject=Check out " + document.title;
            mail_str += "&body=I thought you might be interested in these " + document.title;
            mail_str += ". You can view it at, " + location.href;
            this.href = mail_str;
        }
    }
}

addLoadEvent(prepareEmail);

document.write("<style type='text/css'> .expand-content, .nav-dropdown { display:none; } </style>");

function prepareExpandLinks() {
    if (!document.getElementById) return;
    var body = document.getElementById("body-btm-bkg");
    var expand_links = getElementsByClass("expand-link", body, "a");
    var expand_contents = getElementsByClass("expand-content", body, "div");
    if (expand_links) {
        for (var i = 0; i < expand_links.length; i++) {
            var expand_link = expand_links[i];
            expand_link.onclick = function() {
                var relation = this.rel;
                var id = this.id;
                toggleClass(id, "collapsed");
                toggleClass(relation, "show");
                return false;
            }
        }
    }
}

addLoadEvent(prepareExpandLinks);

function prepareAccordion() {
    if (!document.getElementById) return;
    var accordion = document.getElementById("accordion");
    if (accordion) {
        accordion_headers = getElementsByClass("accordion-header", accordion, "div");
        if (accordion_headers.length > 0) {
            for (var i = 0; i < accordion_headers.length; i++) {
                accordion_headers[i].onclick = function() {
                    return false;
                }
            }
        } else {
            /* remove before launch */
            alert('Accordion Panels could not be found');
        }
    }
}

addLoadEvent(prepareAccordion);

function openFirstResult() {
    if (!document.getElementById) return;
    var results = document.getElementById("results-container");
    if (results) {
        var expand_link = document.getElementById("expand-link-0");
        if (expand_link) {
            var relation = expand_link.rel;
            var link_id = expand_link.id;
            var expand_content = document.getElementById(relation);
            toggleClass(null, "collapsed", expand_link);
            toggleClass(null, "show", expand_content);

            var expand_parent = expand_content.parentNode;
            toggleClass(null, "open", expand_parent);
        }
    }
}

addLoadEvent(openFirstResult);

function expandLinkAddition() {
    if (!document.getElementById) return;
    var results = document.getElementById("results-container");
    if (results) {
        var expand_links = getElementsByClass("expand-link", results, "a");
        if (expand_links) {
            for (var i = 0; i < expand_links.length; i++) {
                var expand_link = expand_links[i];

                expand_link.onclick = function() {
                    var relation = this.rel;
                    var id = this.id;
                    var expand_content = document.getElementById(relation);
                    toggleClass(id, "collapsed");
                    toggleClass(null, "show", expand_content);

                    var expand_parent = expand_content.parentNode;
                    toggleClass(null, "open", expand_parent);
                    return false;
                }
            }
        }
    }
}

addLoadEvent(expandLinkAddition);

function resetClasses(element_collection, Class) {
    if (element_collection.length > 0) {
        for (var i = 0; i < element_collection.length; i++) {
            var id = element_collection[i];
            var element = document.getElementById(id);
            if (element) {
                var currentClassName = element.className;
                if (currentClassName.match(Class) !== null) {
                    toggleClass(id, Class);
                }
            }
        }
    }
}

function toggleClass(element_id, Class, dom_element) {
    var element = document.getElementById(element_id);
    if (!element) {
        element = dom_element;
    }
    if (element) {
        var oldClassName = element.className;
        newClassName = (oldClassName.match(Class) == null) ? oldClassName + " " + Class : oldClassName.replace(Class, "");
        newClassName = newClassName.replace("  ", " ");
        element.className = newClassName;
        return;
    } else {
        /* remove before launch */
        alert('Toggle Element not found');
    }
}

function getElementsByClass(searchClass, node, tag) {
    var classElements = new Array();
    if (node == null)
        node = document;
    if (tag == null)
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    for (i = 0, j = 0; i < elsLen; i++) {
        if (els[i].className.match(searchClass)) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

// function imcomplete, not functional. remove if never used.
function prepareNavigationAccessibility() {
    if (!document.getElementById) return;

    var nav = document.getElementById("main-navigation");
    var nav_links = nav.getElementsByTagName("a");
    var nav_dropdowns = getElementsByClass("nav-dropdown", nav, "div");
    var nav_dropdown_links = new Array();
    
    for (var i = 0; i < nav_dropdowns.length; i++) {
        nav_dropdown = nav_dropdowns[i];
        var links = nav_dropdown.getElementsByTagName("a");
        for (var j = 0; j < links.length; j++) {
            nav_dropdown_links.push(links[j]);
            links[j].onfocus = function() {
                var dropdown = this.parentNode.parentNode.parentNode;
            }
            links[j].onblue = function() {
            }
        }
    }
    
    var top_level_links = new Array();
    for (var k = 0; k < nav_links.length; k++) {
        top_level_links.push(nav_links[k]);
    }

    for (var l = 0; l < nav_dropdown_links.length; l++) {
        var link = nav_dropdown_links[l];
        if(top_level_links.inArray(link)) {
            top_level_links.splice(top_level_links.findIndex(link), 1);
        }
    }

    for (var m = 0; m < top_level_links.length; m++) {
        top_level_links[m].onfocus = function() {
            toggleClass("", "active", this);
            var dropdown = this.nextSibling.nextSibling;
            if (dropdown) {
                toggleClass("", "show", dropdown);
            }
        }
        top_level_links[m].onblur = function() {
            toggleClass("", "active", this);
            var dropdown = this.nextSibling.nextSibling;
            if (dropdown) {
                toggleClass("", "show", dropdown);
            }
        }
    }
}

//addLoadEvent(prepareNavigationAccessibility);

Array.prototype.findIndex = function(value) {
    var ctr = "";
    for (var i = 0; i < this.length; i++) {
        if (this[i] == value) {
            return i;
        }
    }
    return ctr;
};

Array.prototype.inArray = function(value)
{
    var i;
    for (i = 0; i < this.length; i++) {
        if (this[i] == value) {
            return true;
        }
    }
    return false;
};
