﻿//This file contains functionality which appears at the top of the document as all Document ready functionality is placed at the bottom of the HTML document
var Header = {

    Default: (function () {

        function init() {
            Header.FontFace.hideContent();
            Header.GoogleAnalytics.init();
            window.onload = Header.OnLoadMgr.RunOnLoad;
            //Should be called if at least one contour form is on the page
        }

        return {
            init: init
        }
    })(),


    OnLoadMgr: (function () {

        var LoadInitList = [];

        function AddFunction(func) {
            LoadInitList.push(func);
        }

        function RunOnLoad() {
            for (x = 0; x < LoadInitList.length; x++) {
                var tmpFunc = new Function(LoadInitList[x]);
                tmpFunc();
            }
        }

        return {
            AddFunction: AddFunction,
            LoadInitList: LoadInitList,
            RunOnLoad: RunOnLoad
        }

    })(),

    DocReadyMgr: (function () {

        var ReadyInitList = [];

        function AddFunction(func) {
            ReadyInitList.push(func);
        }

        function Run() {
            for (x = 0; x < ReadyInitList.length; x++) {
                var tmpFunc = new Function(ReadyInitList[x]);
                tmpFunc();
            }
        }

        return {
            AddFunction: AddFunction,
            ReadyInitList: ReadyInitList,
            Run: Run
        }

    })(),

    // Functionality to do with @font-face
    FontFace: (function () {

        //Firefox 3.5+ (gecko 1.9.1 inference), hide content till load (or 3 seconds) to prevent FOUT
        function hideContent() {
            (function () {
                var g = document, c = g.documentElement, a = g.createElement("style");
                if (c.style.MozTransform === "") {
                    a.textContent = ".these-fonts-should-match-the-font-face-selector-list {visibility:hidden}";
                    c.firstChild.appendChild(a);
                    function b() {
                        a.parentNode && a.parentNode.removeChild(a)
                    }
                    addEventListener("load", b, false);
                    setTimeout(b, 3000)
                }
            })();
        }

        return {
            hideContent: hideContent
        }

    })(),

    // Asynchronous Google Analytics
    GoogleAnalytics: (function () {

        function init() {
            registerAnalytics();
        }

        function registerAnalytics() {
            /* UNCOMMENT WHEN READY
            var _gaq = [['_setAccount', 'UA-XXXXX-X'], ['_trackPageview']];
            (function(d, t) {
            var g = d.createElement(t),
            s = d.getElementsByTagName(t)[0];
            g.async = 1;
            g.src = '//www.google-analytics.com/ga.js';
            s.parentNode.insertBefore(g, s);
            })(document, 'script');*/
        }

        return {
            init: init
        }

    })(),

    PageTools: (function () {
        function Init() {
            var controls = '<div class="right addthis"><ul class="list-inline addthis_toolbox addthis_default_style">';
            controls += '<li><a class="sprNews addthis_button_email action email"><span>Email</span></a></li>';
            controls += '<li><a class="sprNews addthis_button_print action print"><span>Print</span></a></li>';
            controls += '</ul></div>';
            document.write(controls);
        }

        function Share() {
            var share = '<div class="abs addthis"><div class="addthis_toolbox addthis_default_style"><a class="addthis_button_preferred_1"></a>';
            share += '<a class="addthis_button_preferred_2"></a><a class="addthis_button_email"></a><a class="addthis_button_print"></a>';
            share += '<a class="addthis_button_compact"></a></div></div>';
            document.write(share);
            /*
            <div class="abs addthis"><div class="addthis_toolbox addthis_default_style"><a class="addthis_button_preferred_1"></a>
            <a class="addthis_button_preferred_2"></a><a class="addthis_button_email"></a><a class="addthis_button_print"></a>
            <a class="addthis_button_compact"></a></div></div>
            */
        }

        return { Init: Init, Share: Share }
    })(),

    FlashRotator: (function () {

        function initHomepageRotator() {
            embedFlash('flashRotator', 'flashRotator', "/flash/Rotator.swf", 'homepage-rotator-container', '480', '250');
        }

        function initGlobalHeader() {
            var vars = {};
            var params = { 'wmode': 'transparent' };
            var attributes = { id: 'choose-flash', name: 'choose-flash' };
            swfobject.embedSWF("/flash/header-stickman-choose-location-192x210.swf", 'choose-flash', '192', '210', "9.0.0", "/scripts/expressInstall.swf", vars, params, attributes);
        }

        function embedFlash(attributeId, name, path, id, width, height) {
            var vars = {};
            var params = { 'wmode': 'transparent' };
            var attributes = { id: attributeId, name: name };
            swfobject.embedSWF(path, id, width, height, "9.0.0", "/scripts/expressInstall.swf", vars, params, attributes);
        }

        return {
            initHomepageRotator: initHomepageRotator,
            initGlobalHeader: initGlobalHeader
        }
    })(),

    Utility: (function () {

        function setBodyClass(body, classToAdd) {
            var bodyClass = body.className;
            body.className = bodyClass === '' ? classToAdd : bodyClass += ' ' + classToAdd;
        }

        function scriptWrite(scriptSrc) {
            var script = document.createElement("script");
            script.type = "text/javascript";
            script.src = scriptSrc;
            document.getElementsByTagName("head")[0].appendChild(script);
        }

        return {
            setBodyClass: setBodyClass,
            scriptWrite: scriptWrite
        }
    })(),

    Html5: (function () {
        // "<script>var elm = document.getElementById('{0}'); elm.setAttribute('type','{1}'); elm.setAttribute('placeholder','{2}')</script>";
        function ConvertInput(id, type, placeholder) {
            var input = document.getElementById(id);
            try {
                input.setAttribute('type', type);
                input.setAttribute('placeholder', placeholder);
            } catch (err) {
            }
        }
        return { ConvertInput: ConvertInput }
    })()
}

/***** Cookies Management ********************************************/
var CookieManager = {
    create: function (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=/";
    },
    read: function (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 '';
    },
    erase: function (name) {
        Data.CookieManager.create(name, "", -1);
    }
}

Header.Default.init();
