/**
 * Google Analytics dynamic link tracking script
 * Copyright Beaconfire Consulting, Inc - 2010
 * 
 */
var bf = window.bf || {
    config: {
        debug: false
    }
    , trim: function(str) {return str.replace(/^\s*([\S\s]*?)\s*$/, '$1');}
    , getArgs: function(argumentsArr, offset) {
        offset = offset || 0;
        var args = [];
        for(var i=offset; i<argumentsArr.length; i++) {
            args[args.length] = argumentsArr[i];
        }
        return args;
    }
    , getEventTarget: function(ev) {
        ev = ev || window.event;
        var target = ev.target || ev.srcElement;
        if(target.tagName != 'A') {
            while(target.tagName != 'A' && target != document) target = target.parentNode;
            if(ev.target == document) return false;
        }
        return target;
    }
    , bind: (function() {
        if(Function.prototype.bind) {
            var bind = Function.prototype.bind;
            return function(ctx, func, args) {
                    args = [ctx].concat(args);
                return bind.apply(func, args);
            }
        } else {
            return function(ctx, func, args) {
                return function() {
                    var newArgs = bf.getArgs(arguments);
                    if(args.length)
                        newArgs = args.concat( newArgs );
                    func.apply(ctx, newArgs);
                }
            }
        }
    })()
    , addListener: function(target, type, func, ctx) {
        if(typeof func != 'function') throw new Error('addListener requires a handler function: ' + func);
        var args = bf.getArgs(arguments, 4) || undefined;
        if(ctx || args) func = bf.bind(ctx, func, args);

        if(target.addEventListener) {
            target.addEventListener(type, func, false);
        } else if(window.attachEvent) {
            target.attachEvent('on' + type, func);
        }
    }
    , onLoad: function(func, ctx) {
        var args = [window, 'load', func, ctx].concat(bf.getArgs(arguments, 2));
        bf.addListener.apply(null, args);
    }
}
bf.ga = (function () {

    function configureGA(_gaq) {
            _gaq.push(['_setDomainName', "none" ]);
            _gaq.push(['_setAllowLinker', true ]);
            _gaq.push(['_setAllowHash', false ]);
    }

    return {
        getGATracker: function() {
            return window._gaq;
        }
        , setGATracker: function(tracker) {
            _gaq = tracker;
        }
        , trackMailtoLink: function(aTag) {
	        if (String(aTag.href).indexOf("mailto:") != -1) {
                var tmp = aTag._onclick;
		        aTag.onclick = function(ev){
                    var target = bf.getEventTarget(ev);
                    var splitResult = String(target.href).split(":");
                    _gaq.push(['_trackPageview', '/mailto/' +splitResult[1]])+ ";"+((tmp) ? tmp+";" : "");
                };
                aTag.onclick.linktype = 'mailto';
                return true;
	        }
            return false;
        }
        , trackFileLink: (function() {
            //List of file extensions on your site. Add/edit as you require
            var extDoc = [".doc",".xls",".exe",".zip",".pdf"];

            return function(aTag) {
	            // Tracking electronic documents - doc, xls, pdf, exe, zip
                var curDomain = window.location.hostname;
                var href = String(aTag.href);
                var tmp = aTag._onclick;
	            for (var j=0; j<extDoc.length; j++) {
		            if (href.indexOf(curDomain) != -1 && href.indexOf(extDoc[j]) != -1) {
			            aTag.onclick = function(ev){
                            var target = bf.getEventTarget(ev);
                            var splitResult = target.href.split(curDomain);
                            _gaq.push(['_trackPageview','/downloads/' +splitResult[1]])+ ";"
                                +((tmp) ? tmp+";" : "");
                        };
                        aTag.onclick.linktype = 'downloads';
			            return true;
		            }
	            }
                return false;
            }
        })()
        , trackExternalLink: function(aTag) {
            var curDomain = window.location.hostname;
            var href = bf.trim(String(aTag.href));
            var tmp = aTag._onclick;
		    if ((/^https?:/).test(href)
                && href.indexOf(curDomain) == -1
                && href.indexOf('mailto:') == -1) {

			    aTag.onclick = function(ev){
                    var target = bf.getEventTarget(ev);
                    var splitResult = target.href.split('//');
                    _gaq.push(['_trackPageview','/external/' +splitResult[1]])+ ";"
                        +((tmp != null) ? tmp+";" : "");
                };
                aTag.onclick.linktype = 'external';
                return true;
		    }
            return false;
        }
        , trackCrossDomainLink: function(aTag, all_domains) {
            if(!all_domains) throw new Error("BF:trackCrossDomainLinks: List of domains required for tracking");

            var curDomain = window.location.hostname;
            var href = String(aTag.getAttribute('href'));
            for(var k = 0, len = all_domains.length; k<len; k++) {
                var re = all_domains[k];
                var m = href.match(re);
                if(m) {
                    var d = m[1];
                    if(d != null && d != curDomain && d.indexOf('google-analytics.com') == -1) {
                        aTag.onclick = function(ev){
                            var target = bf.getEventTarget(ev);
                            var goLink = target._onclick ? target._onclick.apply(target,arguments) : true;
                            if(goLink !== false) {
                                _gaq.push(['_link',target.href]);
                                return false;
                            }
                            return goLink;
                        };
                        aTag.onclick.linktype = 'crossdomain';
                        return true;
                    }
                    break;
                }
            }
            return false;
        }
        , trackLinks: (function() {
            var all_as = document.getElementsByTagName('A');
            return function(all_domains) {
                var _gaq = bf.ga.getGATracker();
                if(!_gaq) return;

                configureGA(_gaq);

                var a = null;
                var i = all_as.length;
                while(i) {
                    i--;
                    a = all_as[i];
                    var href = bf.trim(String(a.href));
                    if(!href || href.indexOf('javascript:') != -1) continue;
                    if(a.onclick) {
                        var oc = String(a.onclick);
                        if(oc.indexOf('urchinTracker') > -1 || oc.indexOf('_trackPageview') > -1){
                            continue;
                        }
                        a._onclick = a.onclick;
                    }
                    (all_domains && bf.ga.trackCrossDomainLink(a, all_domains))
                        || bf.ga.trackExternalLink(a)
                        || bf.ga.trackFileLink(a)
                        || bf.ga.trackMailtoLink(a)
                }
            };
        })()
    }
})();
/************************/


var site_path = 'http://feedingamerica.org/';
var action_link = site_path + 'foodbank-results.aspx';
var image_path = site_path + 'SiteFiles/locator-widget/';  

var css = '#foodbankLocator{padding: 16px 16px; color:#333; background-color:transparent; background-repeat: no-repeat; font-family: arial,helvetica,verdana,sans-serif; overflow: hidden; line-height: 16px !important;} #foodbankLocator h2,#foodbankLocator p,#foodbankLocator dl,#foodbankLocator dt,#foodbankLocator dd,#foodbankLocator form{margin: 0; padding: 0; text-align: left;} #foodbankLocator img{border: none; padding: 0; margin: 0;} #foodbankLocator h2{font-size: 16px; margin-bottom: 10px;} #foodbankLocator p{margin-bottom: 10px;} #foodbankLocator .form p{font-size: 14px; overflow: hidden;} #foodbankLocator dd, #foodbankLocator dt{font-size: 12px; padding-bottom: 4px;}  #foodbankLocator .branding p{font-size: 11px !important;} #foodbankLocator .branding p.about{color: #666; clear: both; font-style: italic;}  #foodbankLocator .branding p.share{padding-top: 4px; clear: right; float: right;} #foodbankLocator .branding p.share a{color: #f7941e; font-style: italic; white-space: nowrap;}  #foodbankLocator input,#foodbankLocator select{vertical-align: middle;} #foodbankLocator select{width: auto;} #foodbankLocator input.text{width: 140px;}  .wideside-fbLocator{height: 368px; width: 208px; background-image:url(' + image_path + 'fbLocator-bg-wideside.png);} .wideside-fbLocator .branding{padding-top: 4px;}  .wideside-fbLocator .branding p.about{border-top: #ccc solid 1px; padding: 6px 0 10px 0 !important; margin-bottom: 0 !important; text-align: center !important;} .wideside-fbLocator .branding img{float: right; margin-top:20px !important;}  ';
var css2 = '.wideside-fbLocator{height: 400px; width: 200px; background-image:url(' + image_path + 'fbLocator-bg-wideside.gif);}  ';
var divClass = 'wideside-fbLocator';
var isRegistered = false;


/*  Add the Google Analytics to the head */
var js =  image_path + 'tracking.js';
var head = document.getElementsByTagName('head')[0];
if(head.childNodes != null){
for(var i=0,j=head.childNodes.length;i<j;i++){

var theType = head.childNodes.item(i).nodeType;
if(theType != 3)
{
if(head.childNodes.item(i).tagName == 'SCRIPT' && head.childNodes.item(i).src.match(js))
{
   isRegistered = true;
   break;
   }   	
}
}
}
if(!isRegistered){

    (function() {
        var gat = document.createElement('script'); gat.type = 'text/javascript'; 
        gat.src = 'https://secure.feedingamerica.org/js/ga_link_tracker_async.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gat, s);
    })();

    var trackedDomains = [/^https?:\/\/([\w_\.-]*feedingamerica\.org)\/?/
    , /^https?:\/\/(secure2\.convio\.net)\/?/
    , /^https?:\/\/(secure\.feedingamerica\.org)\/?/
    , /^https?:\/\/(help\.feedingamerica\.org)\/?/,
    , /^https?:\/\/(annualreport\.feedingamerica\.org)\/?/
    , /^https?:\/\/([\w_\.-]*hungeractioncenter\.org)\/?/];
    bf.onLoad(bf.ga.trackLinks, null, trackedDomains);

    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-2852001-9']);
    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_setAllowHash', false]);
    _gaq.push(['_setDomainName', 'none']);
    _gaq.push(['_trackPageview']);

    (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
    })();

/*  Add the tracking js to the head */
var ga2 = document.createElement('script'); ga2.type = 'text/javascript'; ga2.async = true;
ga2.src = js;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga2);
}


var widget_data = '<!-- ' + divClass + ' --><style type="text/css"> '
+ css
+ '</style><!--[if lt IE 7]> <style type="text/css"> '
+ css2
+ '</style> <![endif]--> '
+ '<div id="foodbankLocator" class="' + divClass + '"> '
+ '<form action="' + action_link + '"> '
+ '<h2>Find Your Local Feeding America Food Bank</h2> '
+ '<div class="form"> '
+ '<p>Find the Feeding America food bank that serves your local community.</p> '
+ '<dl> '
+ '<dt>Search by Zip:</dt> '
+ '<dd><input type="text" class="text" name="zip" /></dd> '
+ '<dt>or by State:</dt> '
+ '<dd> '
+ '<select name="state"> '
+ '<option value="" selected="selected"></option> '
+ '<option value="AK">AK</option> '
+ '<option value="AL">AL</option> '
+ '<option value="AR">AR</option> '
+ '<option value="AZ">AZ</option> '
+ '<option value="CA">CA</option> '
+ '<option value="CO">CO</option> '
+ '<option value="CT">CT</option> '
+ '<option value="DC">DC</option> '
+ '<option value="DE">DE</option> '
+ '<option value="FL">FL</option> '
+ '<option value="GA">GA</option> '
+ '<option value="HI">HI</option> '
+ '<option value="IA">IA</option> '
+ '<option value="ID">ID</option> '
+ '<option value="IL">IL</option> '
+ '<option value="IN">IN</option> '
+ '<option value="KS">KS</option> '
+ '<option value="KY">KY</option> '
+ '<option value="LA">LA</option> '
+ '<option value="MA">MA</option> '
+ '<option value="MD">MD</option> '
+ '<option value="ME">ME</option> '
+ '<option value="MI">MI</option> '
+ '<option value="MN">MN</option> '
+ '<option value="MO">MO</option> '
+ '<option value="MS">MS</option> '
+ '<option value="MT">MT</option> '
+ '<option value="NC">NC</option> '
+ '<option value="ND">ND</option> '
+ '<option value="NE">NE</option> '
+ '<option value="NH">NH</option> '
+ '<option value="NJ">NJ</option> '
+ '<option value="NM">NM</option> '
+ '<option value="NV">NV</option> '
+ '<option value="NY">NY</option> '
+ '<option value="OH">OH</option> '
+ '<option value="OK">OK</option> '
+ '<option value="OR">OR</option> '
+ '<option value="PA">PA</option> '
+ '<option value="PR">PR</option> '
+ '<option value="RI">RI</option> '
+ '<option value="SC">SC</option> '
+ '<option value="SD">SD</option> '
+ '<option value="TN">TN</option> '
+ '<option value="TX">TX</option> '
+ '<option value="UT">UT</option> '
+ '<option value="VA">VA</option> '
+ '<option value="VT">VT</option> '
+ '<option value="WA">WA</option> '
+ '<option value="WI">WI</option> '
+ '<option value="WV">WV</option> '
+ '<option value="WY">WY</option> '
+ '</select> '
+ '<input type="image" src="' + image_path + 'fbLocator-btn-go.png"> '
+ '</dd> '
+ '</dl>	 '
+ '</div>	 '
+ '<div class="branding"> '
+ '<p class="about">Feeding America\'s network of more than 200 food banks serves more than 37 million Americans each year.</p> '
+ '<a href="http://feedingamerica.org"><img src="' + image_path + 'fbLocator-logo.png" alt="Feeding America" width="107" height="55" border="0"></a> '
+ '<p class="share"><a href="' + site_path + 'take-action/Community/food-bank-locator-widget.aspx">Get This Widget</a></p> '
+ '</div> '
+ '</form> '
+ '</div>';

document.write(widget_data);

