/**
 * The ReferrerTracker object is used to persist a 'referrer' query string
 * parameter accross sessions.  The 'referrer' will be persisted for 14 days.
 * It automatically checks the 'referrer' query string parameter and sets
 * the 'referrer' cookie.
 * ReferrerTracker is an instanc class, accessible by the getInstance() method.
 * It porvides the getReferrer() method to retrieve the 'referrer' cookie.
 * 
 * Useage:
 * 
 * 1. To capture the referrer:
 *    Include ReferrerTracker in the HTML document as follows:
 *    <script type="text/javascript" src="ReferrerTracker.js"></script>
 * 
 * 2. To get the referrer:
 *    <script type="text/javascript">
 *      var referrer = ReferrerTracker.getInstance.getReferrer();
 *    </script>
 * 
 */
var ReferrerTracker = (function() {

    // Automagic functionality
    // This parses the query string for 'referer' and stores it as a cookie
    for ( var i = 0; i < (nv = window.location.search.substring(1).split("&")).length; i++) {
        if ('referrer' == (nvi = nv[i].split("="))[0]) {
            var referrer = nvi[1];
            if ('deleteCookie' == referrer) {
                eraseCookie('referrer');
                eraseCookie('date');
            } else {
                createCookie('referrer', nvi[1], 14);
                var now = new Date();
                /* now = now.getDate()+"/"+now.getMonth()+"/"+now.getFullYear()+","+now.getHours()+":"+now.getMinutes(); */
                now = now.format("ddd ddS mmm,yyyy hh:MM tt");
                createCookie('date', now, 14);
            }
            break;
        }
    }

    // This is an instance class. Set up instance method
    var _instance = null;
    return {
        getInstance : function() {
            if (!_instance)
                _instance = (function() {
                    function readCookie(name) {
                        var nameEQ = name + "=";
                        var ca = document.cookie.split(';');
                        for ( var i = 0; i < ca.length; i++) {
                            var c = ca[i];
                            while (c.charAt(0) == ' ')
                                c = c.substring(1, c.length);
                            if (c.indexOf(nameEQ) == 0)
                                return c.substring(nameEQ.length, c.length);
                        }
                        return null;
                    }

                    var _referrer = readCookie('referrer');
                    var _date = readCookie('date');
                    
                    return {
                        getReferrer : function() {
                            return _referrer;
                        },
                        getDate : function() {
                        	return _date;
                        }
                    }
                })();
            return _instance;
        }
    }

    // Cookie functions borrowed from
    // http://www.quirksmode.org/js/cookies.html

    function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires=" + date.toGMTString();
        } else
            var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/; domain=mitsubishi-motors.com.au";
    }

    function eraseCookie(name) {
        createCookie(name, "", -1);
    }

})();
