// Enable rel="external" links
// JSTarget function by Roger Johansson, www.456bereastreet.com
var JSTarget = {
    init: function(att,val)
    {
        if (document.getElementById && document.createElement && document.appendChild)
        {
            var strAtt = ((typeof att == 'undefined') || (att == null)) ? 'class' : att;
            var strVal = ((typeof val == 'undefined') || (val == null)) ? 'non-html' : val;
            var oWarning;
            var arrLinks = document.getElementsByTagName('a');
            var oLink;
            var oRegExp = new RegExp("(^|\\s)" + strVal + "(\\s|$)");
            for (var i = 0; i < arrLinks.length; i++)
            {
                oLink = arrLinks[i];
                if ((strAtt == 'class') && (oRegExp.test(oLink.className)) || (oRegExp.test(oLink.getAttribute(strAtt))))
                {
                    oWarning = document.createElement("em");
                    oLink.appendChild(oWarning);
                    oLink.onclick = JSTarget.openWin;
                }
            }
            oWarning = null;
        }
    },
    openWin: function(e)
    {
        var event = (!e) ? window.event : e;
        if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)
        {
            return true;
        }
        else
        {
            var oWin = window.open(this.getAttribute('href'), '_blank');
            if (oWin)
            {
                if (oWin.focus) oWin.focus();
                return false;
            }
            oWin = null;
            return true;
        }
    },
    // addEvent function from http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
    addEvent: function(obj, type, fn)
    {
        if (obj.addEventListener)
        {
            obj.addEventListener(type, fn, false);
        }
        else if (obj.attachEvent)
        {
            obj["e"+type+fn] = fn;
            obj[type+fn] = function() {obj["e"+type+fn]( window.event );}
            obj.attachEvent("on"+type, obj[type+fn]);
        }
    }
};
JSTarget.addEvent(window, 'load', function() {JSTarget.init("rel","external");});

// Google Maps Functions
var map;
var debug = false;

function load()
{
    if (GBrowserIsCompatible())
    {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10, 10)));
        map.setCenter(new GLatLng(49.33217011784417, -113.6067008972168), 9);

        if (debug)
        {
            GEvent.addListener(map, 'moveend', function ()
            {
                GLog.write('moveend: ' + map.getCenter().toString());
            });

            GEvent.addListener(map, "click", function(marker, point)
            {
                if (marker)
                {
                    GLog.write('marker position: ' + marker.getPoint().toString());
                }
            });
        }

        // Add the GCBD marker
        var point = new GLatLng(49.333162927640544, -113.61204639724613);
        var marker = map.addOverlay(new GMarker(point));
    }
}

// Display the newsletter subscribe box
function displaySubscribe() {
    // Hide the Subscribe Now link
    subscribeLinkElement = document.getElementById('subscribe-link');
    subscribeLinkElement.style.display = 'none';

    // Display the subscribe box
    subscribeElement = document.getElementById('subscribe');
    subscribeElement.style.display = 'block';
    subscribeElement.style.visibility = 'visible';
}

// Submit the subscriber's email address
function subscribe ()
{
    var emailAddressElement = document.getElementById('subscriberEmail');
    var messageElement = document.getElementById('subscribe-message');
    var errorMessage = '';
    var name = document.getElementById('subscriberName').value;

    if (emailAddressElement)
    {
        var emailAddress = emailAddressElement.value;
        var validRegExp = /^[^@\+]+@[^@]+.[a-z]{2,}$/i;

        // Validate and sanitize the email address
        if (emailAddress.search(validRegExp) == -1)
        {
            errorMessage = 'Error: A valid email address is required.';
        }

        if (errorMessage != '' && messageElement)
        {
            // Remove the previous message
            if (messageElement.childNodes[0])
            {
                messageElement.removeChild(messageElement.childNodes[0]);
            }

            // Add the new message
            messageElement.appendChild(document.createTextNode(errorMessage));
        }
        else
        {
            // Submit the email address
            new Ajax.Request('/newsletters/subscribe/',
            {
                method: 'POST',
                postBody:   'data[NewslettersSubscriber][email]='+emailAddress+'&'+
                            'data[NewslettersSubscriber][name]='+name,
                onSuccess: function (transport)
                {
                    var response = transport.responseText || "No response recieved!";

                    if (messageElement.childNodes[0])
                    {
                        messageElement.removeChild(messageElement.childNodes[0]);
                    }
                    messageElement.appendChild(document.createTextNode(response));
                },
                onFailure: function() { }
            });
        }
    }
}