﻿//use this to set a maxlength for multiline textboxes
function maxLength(text, long)
{
    var maxlength = new Number(long); // Change number to your max length.

    if (text.value.length > maxlength)
    {

        text.value = text.value.substring(0, maxlength);

        alert("This field allows a maximum of " + long + " characters");

    }
}


$(document).ready(function()
{
    //note that we need all of those != null checks for the page editor mode of sitecore to work


    if ($(".maincontent .editor") != null)
    {
        //generate a random number 1-3
        //var nr = Math.floor(Math.random() * 3 + 1);

        //pick a background image at random:
        // $(".maincontent .editor").css("background-image", "url('/images/photo_random_" + nr + ".png')");
    }

    if ($(".required") != null)
        $(".required").prepend("<span class='req'>*</span>");


    //redirect all external links to the disclaimer-page
    if ($('a') != null)
        SetDisclaimer();


    //focus first input-text element on page
    if ($("form :input[type='text'][className!='zip'][className!='searchTxt']:visible:enabled:first") != null)
        $("form :input[type='text'][className!='zip'][className!='searchTxt']:visible:enabled:first").focus();

    //watermark for search-textboxes
    if ($(".searchTxt") != null)
        $(".searchTxt").Watermark("Enter a Keyword", "#333333");

    if ($(".search_area .zip") != null)
        $(".search_area .zip").Watermark("Enter a ZIP Code", "#333333");


    //when key is pressed in the zip-textbox, only accept numbers; display error if something else is entered
    if ($(".zip") != null)
    {
        $(".zip").keypress(function(e)
        {
            //if the letter is not digit then display error and don't type anything
            if (e.which != 13 && e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57))
            {
                return false;
            }
        });
    }

    //move callout sidebar content in kit
    if ($(".kitPurpleCalloutSide") != null)
    {
        //$(".kitPurpleCalloutSide").insertAfter($("#sidebar"));
        $("#sidebar").append($(".kitPurpleCalloutSide"));
    }

    //make all of the li in navigation clickable
    if ($(".sidemenu ul li") != null)
    {
        $(".sidemenu ul li").each
    (function()
    {
        $(this).click(function()
        {
            window.location = $(this).children("a").attr("href");
            return false;
        })
    }
    );
    }

    //add rounded corners
    if ($(".round") != null)
        $(".round").corner();


    if ($(".eventImageContainer") != null)
    {
        $(".eventImageContainer").cycle({
            fx: "scrollDown",
            speed: 300,
            timeout: 6000,
            pause: 1
        });
    }
});

//adds a label to each added upload-element in radupload control for 508 compliance
function setNewRadUploadLabel(upload, args)
{

    var inputfield = args.get_fileInputField();

    if (inputfield.id.indexOf("file0") == -1)
        $("#" + inputfield.id).before("<label class='hiddenSR' for=\"" + inputfield.id + "\" >Select Document:</label>");
}
function SetDisclaimer()
{
    //redirect all external links to disclaimer-page
    $('a').filter(
                    function()
                    {
                        return this.hostname && this.hostname !== location.hostname && this.hostname.indexOf("rmmedia") == -1;

                    }).each(

                        function(i)
                        {
                            //redirect
                            if ($(this).attr("href").toLowerCase().indexOf("recoverymonth.gov") == -1 && $(this).attr("href").toLowerCase().indexOf("samhsa") == -1 &&
                                $(this).attr("href").toLowerCase().indexOf("hhs") == -1 && $(this).attr("href").toLowerCase().indexOf("postback") == -1 && 
                                $(this).attr("href").toLowerCase().indexOf("mailto:") == -1)//for linkbuttons
                            {
                                $(this).attr("href", root + "Disclaimer.aspx?url=" + $(this).attr("href"));
                                $(this).attr("target", "_blank");
                                //add image
                                //$(this).after(' <img src="' + root + '/images/external.png" alt="external link"/>');
                            }
                        }
                );
}

//hide all labels that show results of an action
function hideResultLabels()
{
    $(".successLabel").fadeOut("fast");
    $(".failureLabel").fadeOut("fast");
}

//show all labels that show results of an action
function showResultLabels()
{
    $(".successLabel").fadeIn("normal");
    $(".failureLabel").fadeIn("normal");
}

var flashInstance = 0;
function doTeaser(swfPath, swfWidth, swfHeight, swfMajorVersion, swfMinorVersion, swfRevision, swfBgColor, imgPath, imgWidth, imgHeight, imgAlt, linkPath)
{
    var hasRequestedVersion = DetectFlashVer(swfMajorVersion, swfMinorVersion, swfRevision);
    if (hasRequestedVersion)
    {
        AC_FL_RunContent(
        "src", swfPath,
        "width", swfWidth,
        "height", swfHeight,
        "align", "middle",
        "id", ("teaserFlash" + flashInstance++),
        "quality", "high",
        "bgcolor", swfBgColor,
        "name", ("teaserFlash" + flashInstance++),
        "allowScriptAccess", "sameDomain",
        "type", "application/x-shockwave-flash",
        'codebase', 'http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab',
        "pluginspage", "http://www.adobe.com/go/getflashplayer",
        'FlashVars', 'linkurl=' + linkPath
        );
    }
    else
    {
        var alternateContent = '<a href="' + linkPath + '"><img src="' + imgPath + '" alt="' + imgAlt + '" width="' + imgWidth + '" height="' + imgHeight + '" /></a>';
        document.write(alternateContent);
    }
}

//corner plugin
; (function($)
{

    var expr = (function()
    {
        var div = document.createElement('div');
        try { div.style.setExpression('width', '0+0'); }
        catch (e) { return false; }
        return true;
    })();

    function sz(el, p)
    {
        return parseInt($.css(el, p)) || 0;
    };
    function hex2(s)
    {
        var s = parseInt(s).toString(16);
        return (s.length < 2) ? '0' + s : s;
    };
    function gpc(node)
    {
        for (; node && node.nodeName.toLowerCase() != 'html'; node = node.parentNode)
        {
            var v = $.css(node, 'backgroundColor');
            if (v.indexOf('rgb') >= 0)
            {
                if ($.browser.safari && v == 'rgba(0, 0, 0, 0)')
                    continue;
                var rgb = v.match(/\d+/g);
                return '#' + hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
            }
            if (v && v != 'transparent')
                return v;
        }
        return '#ffffff';
    };

    function getWidth(fx, i, width)
    {
        switch (fx)
        {
            case 'round': return Math.round(width * (1 - Math.cos(Math.asin(i / width))));
            case 'cool': return Math.round(width * (1 + Math.cos(Math.asin(i / width))));
            case 'sharp': return Math.round(width * (1 - Math.cos(Math.acos(i / width))));
            case 'bite': return Math.round(width * (Math.cos(Math.asin((width - i - 1) / width))));
            case 'slide': return Math.round(width * (Math.atan2(i, width / i)));
            case 'jut': return Math.round(width * (Math.atan2(width, (width - i - 1))));
            case 'curl': return Math.round(width * (Math.atan(i)));
            case 'tear': return Math.round(width * (Math.cos(i)));
            case 'wicked': return Math.round(width * (Math.tan(i)));
            case 'long': return Math.round(width * (Math.sqrt(i)));
            case 'sculpt': return Math.round(width * (Math.log((width - i - 1), width)));
            case 'dog': return (i & 1) ? (i + 1) : width;
            case 'dog2': return (i & 2) ? (i + 1) : width;
            case 'dog3': return (i & 3) ? (i + 1) : width;
            case 'fray': return (i % 2) * width;
            case 'notch': return width;
            case 'bevel': return i + 1;
        }
    };

    $.fn.corner = function(o)
    {
        // in 1.3+ we can fix mistakes with the ready state
        if (this.length == 0)
        {
            if (!$.isReady && this.selector)
            {
                var s = this.selector, c = this.context;
                $(function()
                {
                    $(s, c).corner(o);
                });
            }
            return this;
        }

        o = (o || "").toLowerCase();
        var keep = /keep/.test(o);                       // keep borders?
        var cc = ((o.match(/cc:(#[0-9a-f]+)/) || [])[1]);  // corner color
        var sc = ((o.match(/sc:(#[0-9a-f]+)/) || [])[1]);  // strip color
        var width = parseInt((o.match(/(\d+)px/) || [])[1]) || 10; // corner width
        var re = /round|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dog/;
        var fx = ((o.match(re) || ['round'])[0]);
        var edges = { T: 0, B: 1 };
        var opts = {
            TL: /top|tl/.test(o), TR: /top|tr/.test(o),
            BL: /bottom|bl/.test(o), BR: /bottom|br/.test(o)
        };
        if (!opts.TL && !opts.TR && !opts.BL && !opts.BR)
            opts = { TL: 1, TR: 1, BL: 1, BR: 1 };
        var strip = document.createElement('div');
        strip.style.overflow = 'hidden';
        strip.style.height = '1px';
        strip.style.backgroundColor = sc || 'transparent';
        strip.style.borderStyle = 'solid';
        return this.each(function(index)
        {
            var pad = {
                T: parseInt($.css(this, 'paddingTop')) || 0, R: parseInt($.css(this, 'paddingRight')) || 0,
                B: parseInt($.css(this, 'paddingBottom')) || 0, L: parseInt($.css(this, 'paddingLeft')) || 0
            };

            if (typeof this.style.zoom != undefined) this.style.zoom = 1; // force 'hasLayout' in IE
            if (!keep) this.style.border = 'none';
            strip.style.borderColor = cc || gpc(this.parentNode);
            var cssHeight = $.curCSS(this, 'height');

            for (var j in edges)
            {
                var bot = edges[j];
                // only add stips if needed
                if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR)))
                {
                    strip.style.borderStyle = 'none ' + (opts[j + 'R'] ? 'solid' : 'none') + ' none ' + (opts[j + 'L'] ? 'solid' : 'none');
                    var d = document.createElement('div');
                    $(d).addClass('jquery-corner');
                    var ds = d.style;

                    bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);

                    if (bot && cssHeight != 'auto')
                    {
                        if ($.css(this, 'position') == 'static')
                            this.style.position = 'relative';
                        ds.position = 'absolute';
                        ds.bottom = ds.left = ds.padding = ds.margin = '0';
                        if (expr)
                            ds.setExpression('width', 'this.parentNode.offsetWidth');
                        else
                            ds.width = '100%';
                    }
                    else if (!bot && $.browser.msie)
                    {
                        if ($.css(this, 'position') == 'static')
                            this.style.position = 'relative';
                        ds.position = 'absolute';
                        ds.top = ds.left = ds.right = ds.padding = ds.margin = '0';

                        // fix ie6 problem when blocked element has a border width
                        if (expr)
                        {
                            var bw = sz(this, 'borderLeftWidth') + sz(this, 'borderRightWidth');
                            ds.setExpression('width', 'this.parentNode.offsetWidth - ' + bw + '+ "px"');
                        }
                        else
                            ds.width = '100%';
                    }
                    else
                    {
                        ds.margin = !bot ? '-' + pad.T + 'px -' + pad.R + 'px ' + (pad.T - width) + 'px -' + pad.L + 'px' :
                                        (pad.B - width) + 'px -' + pad.R + 'px -' + pad.B + 'px -' + pad.L + 'px';
                    }

                    for (var i = 0; i < width; i++)
                    {
                        var w = Math.max(0, getWidth(fx, i, width));
                        var e = strip.cloneNode(false);
                        e.style.borderWidth = '0 ' + (opts[j + 'R'] ? w : 0) + 'px 0 ' + (opts[j + 'L'] ? w : 0) + 'px';
                        bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
                    }
                }
            }
        });
    };

    $.fn.uncorner = function() { return $('.jquery-corner', this).remove(); };

})(jQuery);

1/**
2 * jQuery.ScrollTo - Easy element scrolling using jQuery.
3 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
4 * Dual licensed under MIT and GPL.
5 * Date: 5/25/2009
6 * @author Ariel Flesler
7 * @version 1.4.2
8 *
9 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
10 */
11; (function(d) { var k = d.scrollTo = function(a, i, e) { d(window).scrollTo(a, i, e) }; k.defaults = { axis: 'xy', duration: parseFloat(d.fn.jquery) >= 1.3 ? 0 : 1 }; k.window = function(a) { return d(window)._scrollable() }; d.fn._scrollable = function() { return this.map(function() { var a = this, i = !a.nodeName || d.inArray(a.nodeName.toLowerCase(), ['iframe', '#document', 'html', 'body']) != -1; if (!i) return a; var e = (a.contentWindow || a).document || a.ownerDocument || a; return d.browser.safari || e.compatMode == 'BackCompat' ? e.body : e.documentElement }) }; d.fn.scrollTo = function(n, j, b) { if (typeof j == 'object') { b = j; j = 0 } if (typeof b == 'function') b = { onAfter: b }; if (n == 'max') n = 9e9; b = d.extend({}, k.defaults, b); j = j || b.speed || b.duration; b.queue = b.queue && b.axis.length > 1; if (b.queue) j /= 2; b.offset = p(b.offset); b.over = p(b.over); return this._scrollable().each(function() { var q = this, r = d(q), f = n, s, g = {}, u = r.is('html,body'); switch (typeof f) { case 'number': case 'string': if (/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)) { f = p(f); break } f = d(f, this); case 'object': if (f.is || f.style) s = (f = d(f)).offset() } d.each(b.axis.split(''), function(a, i) { var e = i == 'x' ? 'Left' : 'Top', h = e.toLowerCase(), c = 'scroll' + e, l = q[c], m = k.max(q, i); if (s) { g[c] = s[h] + (u ? 0 : l - r.offset()[h]); if (b.margin) { g[c] -= parseInt(f.css('margin' + e)) || 0; g[c] -= parseInt(f.css('border' + e + 'Width')) || 0 } g[c] += b.offset[h] || 0; if (b.over[h]) g[c] += f[i == 'x' ? 'width' : 'height']() * b.over[h] } else { var o = f[h]; g[c] = o.slice && o.slice(-1) == '%' ? parseFloat(o) / 100 * m : o } if (/^\d+$/.test(g[c])) g[c] = g[c] <= 0 ? 0 : Math.min(g[c], m); if (!a && b.queue) { if (l != g[c]) t(b.onAfterFirst); delete g[c] } }); t(b.onAfter); function t(a) { r.animate(g, j, b.easing, a && function() { a.call(this, n, b) }) } }).end() }; k.max = function(a, i) { var e = i == 'x' ? 'Width' : 'Height', h = 'scroll' + e; if (!d(a).is('html,body')) return a[h] - d(a)[e.toLowerCase()](); var c = 'client' + e, l = a.ownerDocument.documentElement, m = a.ownerDocument.body; return Math.max(l[h], m[h]) - Math.min(l[c], m[c]) }; function p(a) { return typeof a == 'object' ? a : { top: a, left: a} } })(jQuery);