﻿function getBaseDomain(url) {
    
    var baseURL = '';
    
    if (url.indexOf(":") == 5) {
        // https
        baseURL = url.substring(8, url.indexOf('/', 8));
    } else {
        // http
        baseURL = url.substring(7, url.indexOf('/', 7));
    }
  
    return baseURL;
}
    // Check for file links
    var possibleExtensions = new Array("pdf", "doc", "docx", "xls", "xlsx", "ppt", "pptx", "txt", "zip", "jpg", "gif");
    var linksExtensions = [];

function getLinkExtension(link) {return getValidExtention(link.href.substring(link.href.length - 4).replace(".", "")); }
function checkIsMailLink(link) { if (link.href.substring(0, 7) == "mailto:") { return true; } return false; }
function checkIsExternalLink(link) { if (link.href.substring(0, 4) == "http") { return true; } return false; }
function getValidExtention(ext) {
    var thisExt;
    thisExt = null;
    for (var i in possibleExtensions) {
        if (ext == possibleExtensions[i]) {
            thisExt = ext;
        }
    }
    return thisExt;
}

function checkIsDomainException(link) {
    var thisDomain = getBaseDomain(link.href);
    var domainExceptions = new Array("apps.baltimorecity.gov", "dev.baltimorecity.gov", "test.baltimorecity.gov", "www.baltimorecity.gov", "baltimorecity.gov", "baltimore.customerservicerequest.org", "cityservices.baltimorecity.gov", "localhost", "69.59.141.170", "maps.baltimorecity.gov", "mayr-m-karr","dmz-iis-dev", "balt-inter-dev");
    for (var i in domainExceptions) {
        if (domainExceptions[i] == thisDomain || thisDomain.indexOf(':',0) != -1) {
            return true;
            break;
        }
    }
    return false;
}

function getCurrentStyle(elem, prop) {
    if (elem.currentStyle) {
        var ar = prop.match(/\w[^-]*/g);
        var s = ar[0];
        for (var i = 1; i < ar.length; ++i) {
            s += ar[i].replace(/\w/, ar[i].charAt(0).toUpperCase());
        }
        return elem.currentStyle[s]
    }
    else if (document.defaultView.getComputedStyle) {
        return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);
    }
}

jQuery(document).ready(function() {

    // Show menu items when tabbed to
    jQuery("a.skipNavLink").focus(function() {
        jQuery("#accessMenu").removeClass("offPage");
    }).blur(function() {
        jQuery("#accessMenu").addClass("offPage");
    });

    // Link Dressings
    jQuery('a:not("#dnn_AccessPane a,a[name],.ControlPanel a"), #webmaster a').each(function() {

        var myExtension = getLinkExtension(this);
        var IsExternalLink = checkIsExternalLink(this);
        var IsDomainException = checkIsDomainException(this);
        var IsMailLink = checkIsMailLink(this);
        var IsFileLink = getLinkExtension(this);

        if (IsExternalLink && !IsDomainException && !IsFileLink) {
            jQuery(this).append('<span class=\"offPage\">(External Link)</span>');
            if (!jQuery(this).hasClass('codeBehind') && !jQuery(this).parent().hasClass('TitleCell')) {
                this.className = this.className + " linkIcon extLinkIcon";
            }
        }

        if (IsMailLink) {
            jQuery(this).append('<span class=\"offPage\">(Email Link)</span>');
            if (!jQuery(this).hasClass('codeBehind')) {
                this.className = this.className + " linkIcon mailtoIcon";
            }
        }

        for (var i in possibleExtensions) {
            if (myExtension == possibleExtensions[i]) {
                if (!jQuery(this).hasClass('codeBehind') && !jQuery(this).parent().hasClass('TitleCell')) {
                    this.className = this.className + " linkIcon " + myExtension + "Icon";
                }
                break;
            }

            var fileClass = possibleExtensions[i].toLowerCase() + "Icon";
            var fileExtension = fileClass.replace("Icon", "").toUpperCase();
            if (fileClass == "Icon") {
                fileExtension = "Unknown";
            }

            if (jQuery(this).hasClass(fileClass)) {
                jQuery(this).append('<span class=\"offPage\">(' + fileExtension.toUpperCase() + ' File)</span>');
            }

        }

    }); // End Link Dressings
    for (var i = 0; i < possibleExtensions.length; i++) {
        var thisClass = possibleExtensions[i] + "Icon";

        if (jQuery('a').hasClass(thisClass)) { linksExtensions.push(possibleExtensions[i]); }

        // Check for upper case
        var thisClassUpper = possibleExtensions[i].toUpperCase() + "Icon";
        if (jQuery('a').hasClass(thisClassUpper)) { linksExtensions.push(possibleExtensions[i]); }
    }

    if (linksExtensions.length > 0) {
        jQuery('#viewerDownloads').css('display', 'block');
        for (var i in linksExtensions) {
            var le = linksExtensions[i];
            if (le.substring(le.length - 1).toLowerCase() == 'x') {
                le = le.substring(0, le.length - 1);
            }
            jQuery('#' + le + 'Viewer').css('display', 'block');
        }
    }

    jQuery('#leftColumn h2').each(function() {
        var thisEl = this;
        var parentAnchor = thisEl.parentNode.parentNode;
        var parentListItem = thisEl.parentNode.parentNode.parentNode;

        if (jQuery(parentListItem).hasClass('rmItem')) {
           
            thisEl.setAttribute("class", "menuSectionH2");

            parentListItem.setAttribute("class", "menuSectionItem");
            parentListItem.appendChild(thisEl);
            parentListItem.removeChild(parentAnchor);

        }
    });

    jQuery('#leftColumn a').each(function() {
        this.removeAttribute('title');
    });
});                                        // End Document Ready
