/****************************************************************************/
/******************** HIGH LEVEL (onload type) calls *******************************/
/****************************************************************************/

// rotate mission partner images
jQuery(document).ready(function($) {
      rotatePartnerImages();
    })
    
// enable facebox overlay - doesn't work yet
jQuery(document).ready(function($) {
      $('a.overlay-link').facebox();
    })
    

// enable link rewriting for analytics
jQuery(document).ready(function() {
      setAnalyticsLinks(); 
    })


/****************************************************************************/
/******************** NAVIGATION scripts *******************************/
/****************************************************************************/

//DOM scripting to force IE6 to perform :hover on <li> tags
sfHover = function() {
	var sfEls = document.getElementById("main-nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			className = this.className;
			this.className+=" sfhover";
			//remove comments for image swapping on top level nav items
			//alert (this.className);
			//switchImage('topnav_' + className,'on');
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			//remove comments for image swapping on top level nav items
			//switchImage('topnav_' + this.className,'off');
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

// Uncomment if swapping images for preload and correct imgDir location
//var imgDir = "images/";
//function simplePreload()
//{
//    var args = simplePreload.arguments;
//    document.imageArray = new Array(args.length);
//    for(var i=0; i<args.length; i++)
//    {
//        document.imageArray[i] = new Image;
//        document.imageArray[i].src = imgDir + args[i];
//    }
//}


/****************************************************************************/
/******************** ANALYTICS functions *******************************/
/****************************************************************************/

function gainfo(category,action,label,href) 
{
 //alert(category + "|" + action + "|" + label + "|" + href);
 
 // record "event"
 pageTracker._trackEvent(category, action, label);
 //var clickEventTracker  = secondTracker._createEventTracker(category);
 
  // special action for hunger map clicks
 if (category == 'map' && action == 'foodbank website click')
 {
    pageTracker._trackPageview('/foodbanks/map/' + href);
    // link being followed within the flash
 }
 // actually follows link with rewritten url
 else if (href != undefined && href != "undefined")
 {
    pageTracker._link(href); 
 }
 

 //return false;
}

// case insensitive substring match
function matchCiSub(haystack, needle)
{
    var value = "";
    if (haystack != undefined)
    {
    value = (haystack.toLowerCase().indexOf(needle.toLowerCase()) != -1);
    }
    return value;
}


// high level calls to linking routines
function setAnalyticsLinks()
{
    // rewrite links for linked analytics sites
    rewriteLinkedSites();
    
    // add events for page site tracking
    rewritePageSites();
    
    // add events for foodbank urls
    rewriteFoodBanks();
    
    // convio source sites
    rewriteSourceSites();
    
    // add events for other external links not already handled
    rewriteAdditionalExternalLinks();
  
}

// linked sites are things like HAC that listed in the meta
function rewriteLinkedSites()
{
    // get all linked analytics sites from meta data
    var $linkedSites = $("meta[name*='linksite_']");

    // loop over each and match to hrefs
    $linkedSites.each(function (i,ele)
    {
        var site = $(ele).attr('content');
        $("body a").filter(function(){return matchCiSub($(this).attr('href'), site);}).each( function (j, ele2)
        {
                // writes page tracker click event for linked sites    
                //$(ele2).attr('onclick', 'alert("linked site");'); // TEST
                //$(ele2).attr('onClick', 'pageTracker._link(this.href); return false;');
                $(ele2).bind("click", function(e){pageTracker._link(this.href); return false;});
                
        });
    });
       
}

// page sites are sites in the meta that should be shown as a page link
function rewritePageSites()
{
    // get all linked analytics sites from meta data
    var $linkedSites = $("meta[name*='pagesite_']");

    // loop over each and match to hrefs
    $linkedSites.each(function (i,ele)
    {
        var site = $(ele).attr('content');
        $("body a").filter(function(){return matchCiSub($(this).attr('href'), site);}).each( function (j, ele2)
        {
                // add page tracker
                //$(ele2).attr('onclick', 'alert("page view site");'); // TEST
                //$(ele2).attr('onClick', 'pageTracker._trackPageview("' + $(ele).attr('content') + '");');
                $(ele2).bind("click", function(e){pageTracker._trackPageview("'" + $(ele).attr('content') + "'");});
                
        });
    });
       
}

// food bank sites have a class of "foodbank" on them
function rewriteFoodBanks()
{
    // easiest is to write all foodbank urls and then rewrite the ones in the right sidebar
    
    // set all foodbanks
    $("body a.foodbank").each( function (j, ele2)
    {   
            // add page tracker
            //$(ele2).attr('onclick', 'alert("fb-content");'); // TEST
           // $(ele2).attr('onClick', "pageTracker._trackPageview('/foodbanks/content/' + this.href);");
            $(ele2).bind("click", function(e){pageTracker._trackPageview('/foodbanks/content/' + this.href);});
            
    });
    
    // right bar modules
    $("div#secondary-content a.foodbank").each( function (j, ele2)
    {
            // add page tracker
            //$(ele2).attr('onclick', 'alert("fb-cookie");'); // TEST
            //$(ele2).attr('onClick', "pageTracker._trackPageview('/foodbanks/fb-cookie/' + this.href);");  
            $(ele2).bind("click", function(e){pageTracker._trackPageview('/foodbanks/fb-cookie/' + this.href);}); 
    });
    
    // foodbank search results
    $("div#foodbank-search-results a.foodbank").each( function (j, ele2)
    {
            // add page tracker
            //$(ele2).attr('onclick', 'alert("fb-loc");'); // TEST
            //$(ele2).attr('onClick', "pageTracker._trackPageview('/foodbanks/fb-loc/' + this.href);");  
            $(ele2).bind("click", function(e){pageTracker._trackPageview('/foodbanks/fb-loc/' + this.href);}) 
    });    
       
}

// rewrite actual links for convio
function rewriteSourceSites()
{

    // get all linked analytics sites from meta data
    var convio_source = $("meta[name='convio_source']").attr('content');
    var convio_subsource = $("meta[name='convio_subsource']").attr('content');

    // loop over each and match to hrefs
    var siteMatch = "secure2.convio.net/a2h/site/donation";

        $("body a").filter(function(){return matchCiSub($(this).attr('href'), siteMatch);}).each( function (j, ele2)
        {
                // writes page tracker click event for linked sites    
                // add page tracker

                // uses querystring.js
                var url = new Querystring($(ele2).attr('href'));
                
                if (convio_source != '')
                {
                    url.set("s_src", convio_source);
                }
                // always set now
                //if (convio_subsource != '')
                {
                    url.set("s_subsrc", escape(window.location));
                }
                var href = url.toAbsoluteUrl();

                //var href = jQuery.url.attr("path");
                $(ele2).attr('href', href);
                //$(ele2).attr('onClick', 'alert("' + href + '");');
                //$(ele2).attr('onClick', 'pageTracker._link(this.href); return false;');
                
        });
       
}



// rewrite other external links that aren't being tracked
function rewriteAdditionalExternalLinks()
{
        // doesn't work in local environment - would be blank so we fake it
        var localSite = window.location.host.toLowerCase();
        if (localSite == "")
        {
            localSite = "localSite.com";
        }
        
        $("body a[href^='http:']").not("[href*='" + localSite + "']").each( function (i, ele)
        {
              
                // add page tracker to links without pagetracker already
                var onclickValue = $(ele).attr('onclick');
                if (onclickValue == undefined)
                {
                   onclickValue = '';
                }
                else 
                {   
                    // would be a  Function, not string
                    onclickValue = onclickValue.toString();
                }
                // only add if onclick doesn't already have a pagetracker
                if (!(matchCiSub(onclickValue, "pageTracker")))
                {
                  //alert($(ele).attr('href') + "|" + $(ele).attr('onclick'));
                  //$(ele).attr('onclick', 'alert("external link");'); TEST
                  //var event = "pageTracker._trackPageview('/fake/' + this.href);";
                  //$(ele).attr('onClick', event);
                  $(ele).bind("click", function(e){pageTracker._trackPageview('/fake/' + this.href);}) 
                }

                
        });

}



/****************************************************************************/
/******************** OVERLAY functions *******************************/
/****************************************************************************/


    
/****************************************************************************/
/******************** ROTATING functions *******************************/
/****************************************************************************/
    
function rotatePartnerImages()
{
    var partner_logos = $("div#partners img");
    //alert (partner_logos.length);
    
    var counter = 0;
    var last_partner = $(partner_logos.get(counter++)).fadeIn("slow");    
    
    function next_partner() {
        if(counter >= partner_logos.length) { counter = 0; }
        last_partner.fadeOut("slow");        
        last_partner = $(partner_logos.get(counter++)).fadeIn("slow");
    }
    
    setInterval(next_partner, 5000);
}

/****************************************************************************/
/******************** CALCULATION functions *********************************/
/****************************************************************************/
function calcBowls(e, conversionrate)
{
    var evt = (e) ? e : window.event;
    var key = (evt.keyCode) ? evt.keyCode : evt.which;
    if(key != null) 
    {
        // ignore arrow keys
        if (key < 37 || key > 40)
        {
            // strip out non-numeric characters
            document.getElementById('dollars').value = stripAlphaChars(document.getElementById('dollars').value);
        }

        if (document.getElementById('dollars').value == '')
        {
            document.getElementById('bowls').value = '';
            // append amount to the Convio URL
            $("body a.conviofillabowl").each( function (j, ele2)
            {   
                 // uses querystring.js
                var url = new Querystring($(ele2).attr('href'));                
                {
                    url.remove("PREFILL_AMOUNT");
                }
                var href = url.toAbsoluteUrl();
                $(ele2).attr('href', href);     
            });
        }
        else
        {
            var dollars = parseInt(document.getElementById('dollars').value,10);
            document.getElementById('bowls').value = dollars * conversionrate;
            
            // append to the Convio URL
            $("body a.conviofillabowl").each( function (j, ele2)
            {   
                 // uses querystring.js
                var url = new Querystring($(ele2).attr('href'));                
                {
                    url.set("PREFILL_AMOUNT", escape($("body input.dollarsfillabowl").attr('value')));
                }
                var href = url.toAbsoluteUrl();
                $(ele2).attr('href', href);     
            });
        }
    }   
}

function stripAlphaChars(pstrSource) 
{ 
    var m_strOut = new String(pstrSource); 
    m_strOut = m_strOut.replace(/[^0-9]/g, ''); 

    return m_strOut; 
}

function updateDonateLink(convioAmtID)
{
    // JSH - NB: The URL manipulation code below requires there to already be at least 1 querystring param on the URL
    // i.e. http://www.blah.com/?1=1
    if (convioAmtID == '')
    {
       // remove DONATION_LEVEL_ID_SELECTED from the URL
       $("body a.lnkConvioDonate").each( function (j, ele2)
        {   
             // uses querystring.js
            var url = new Querystring($(ele2).attr('href'));                
            {
                url.remove("DONATION_LEVEL_ID_SELECTED");
            }
            var href = url.toAbsoluteUrl();
            $(ele2).attr('href', href);     
        });
    }
    else
    {
        // append convioAmtID to the Convio URL
        $("body a.lnkConvioDonate").each( function (j, ele2)
        {   
             // uses querystring.js
            var url = new Querystring($(ele2).attr('href'));                
            {
                url.set("DONATION_LEVEL_ID_SELECTED", convioAmtID);
            }
            var href = url.toAbsoluteUrl();
            $(ele2).attr('href', href);     
        });
    }
}