if (typeof PeopleInsite === 'undefined') {
    var PeopleInsite = {};
}

PeopleInsite.login = function() {

    var LOGIN_ACTION = "/login";

    var SSL_PORT = {
        "" : "",
        "8080" : "8443",
        "80"   : "443",
        "8443" : "8443",
        "443"  : "443"
    };

    var _errorMessage;
    var _interval;

    var _baseURI;


    var AUTH_COOKIE = "persistentSession";
    var AUTH_URI = "/secure/session/auth.json";
    var HOME_URI = "/secure/home";

    function uri(path) {
        return _baseURI + path;
    }

    function redirect(absolutePath) {
        window.location = uri(absolutePath);
    }

    var authenticationCallback = {
        success: function(o) {
            var loginPanel = YAHOO.util.Dom.get("loginPanel");
            if (loginPanel) {
                loginPanel.innerHTML = "<p class='loginAutoMsg'>Logging in... (<a href='/secure/logout'>Logout</a>)</p>";
            }
            // the user is pre-authenticated - redirect to account home
            setTimeout(function() {
                redirect(HOME_URI);
            }, 2000);
        },
        failure: function(o) {
            // the cookie is invalid
            YAHOO.util.Cookie.remove(AUTH_COOKIE);
        }
    };

    function authenticate() {
        YAHOO.util.Connect.resetFormState();
        YAHOO.util.Connect.asyncRequest("POST", AUTH_URI, authenticationCallback);
    }

    /**
     * If the auth cookie exists, make an HTTP request to see if the user is logged in.
     * If logged in, redirect to their home page
     */
    function initAutoAuthentication() {
        var authCookieValue = YAHOO.util.Cookie.get(AUTH_COOKIE);
        if (authCookieValue) {
            authenticate();
        }
    }

    function evaluateTarget(domain, sslPort, port) {
        var target;
        if ((domain.indexOf("stage") === 0) || (domain.indexOf("snow") === 0) || (domain.indexOf("beta") === 0) || (domain.indexOf("-dev") > 0)) {
            target = "http://" + domain + (port ? ":" + port : "")+LOGIN_ACTION;
        } else {
            target = "https://" + domain + (sslPort ? ":" + sslPort : "")+LOGIN_ACTION;
        }
        return target;
    }

    function setupBaseURI() {
        var target;
        var sslPort;
        var domain = document.domain;
        var uri = document.URL;
        var startPos = uri.indexOf(domain) + domain.length + 1;
        var endPos = uri.indexOf("/", startPos - 1);
        var port;
        if (endPos > startPos) {
            port = uri.substring(startPos, endPos);
        }

        if (port) {
            sslPort = SSL_PORT[port];
        } else {
            sslPort = null;
        }

        target = evaluateTarget(domain, sslPort, port);

        _baseURI = target;
    }

    return {
        init : function() {
            setupBaseURI();
            initAutoAuthentication();
            var usernameEl = document.getElementById("username");
            if (usernameEl) {
                // focus if not used
                if (usernameEl.value.length === 0) {
                    usernameEl.focus();
                }
            }
        },
        submit : function(loginForm) {
            var target;
            var sslPort;
            var domain = document.domain;
            var uri = document.URL;
            var startPos = uri.indexOf(domain) + domain.length + 1;
            var endPos = uri.indexOf("/", startPos - 1);
            var port;
            if (endPos > startPos) {
                port = uri.substring(startPos, endPos);
            }

            if (port) {
                sslPort = SSL_PORT[port];
            } else {
                sslPort = null;
            }

            target = evaluateTarget(domain, sslPort, port);

            loginForm.action = target;
            loginForm.method = 'POST';

            // all allow the default event to proceed
            return true;
        }
    };
}();


// todo: remove namespace clutter introduced by Pusher
function MM_preloadImages() { //v3.0
    var d = document;
    if (d.images) {
        if (!d.MM_p) d.MM_p = new Array();
        var i,j = d.MM_p.length,a = MM_preloadImages.arguments;
        for (i = 0; i < a.length; i++)
            if (a[i].indexOf("#") != 0) {
                d.MM_p[j] = new Image;
                d.MM_p[j++].src = a[i];
            }
    }
}

function MM_findObj(n, d) { //v4.01
    var p,i,x;
    if (!d) d = document;
    if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document;
        n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n];
    for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById) x = d.getElementById(n);
    return x;
}

function MM_nbGroup(event, grpName) { //v6.0
    var i,img,nbArr,args = MM_nbGroup.arguments;
    if (event == "init" && args.length > 2) {
        if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
            img.MM_init = true;
            img.MM_up = args[3];
            img.MM_dn = img.src;
            if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
            nbArr[nbArr.length] = img;
            for (i = 4; i < args.length - 1; i += 2) if ((img = MM_findObj(args[i])) != null) {
                if (!img.MM_up) img.MM_up = img.src;
                img.src = img.MM_dn = args[i + 1];
                nbArr[nbArr.length] = img;
            }
        }
    } else if (event == "over") {
        document.MM_nbOver = nbArr = new Array();
        for (i = 1; i < args.length - 1; i += 3) if ((img = MM_findObj(args[i])) != null) {
            if (!img.MM_up) img.MM_up = img.src;
            img.src = (img.MM_dn && args[i + 2]) ? args[i + 2] : ((args[i + 1]) ? args[i + 1] : img.MM_up);
            nbArr[nbArr.length] = img;
        }
    } else if (event == "out") {
        for (i = 0; i < document.MM_nbOver.length; i++) {
            img = document.MM_nbOver[i];
            img.src = (img.MM_dn) ? img.MM_dn : img.MM_up;
        }
    } else if (event == "down") {
        nbArr = document[grpName];
        if (nbArr)
            for (i = 0; i < nbArr.length; i++) {
                img = nbArr[i];
                img.src = img.MM_up;
                img.MM_dn = 0;
            }
        document[grpName] = nbArr = new Array();
        for (i = 2; i < args.length - 1; i += 2) if ((img = MM_findObj(args[i])) != null) {
            if (!img.MM_up) img.MM_up = img.src;
            img.src = img.MM_dn = (args[i + 1]) ? args[i + 1] : img.MM_up;
            nbArr[nbArr.length] = img;
        }
    }
}
function MM_swapImgRestore() { //v3.0
    var i,x,a = document.MM_sr;
    for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}
function MM_swapImage() { //v3.0
    var i,j = 0,x,a = MM_swapImage.arguments;
    document.MM_sr = new Array;
    for (i = 0; i < (a.length - 2); i += 3)
        if ((x = MM_findObj(a[i])) != null) {
            document.MM_sr[j++] = x;
            if (!x.oSrc) x.oSrc = x.src;
            x.src = a[i + 2];
        }
}

// global Rotating Image Stuff
var random_display = 0; // 0 = no, 1 = yes

var intervals = new Array();
intervals["hImage"] = new Array(1.5, 5); // delay between rotating images (in seconds)
intervals["hImage"][0] *= 1000;
intervals["hImage"][1] *= 1000;

intervals["rImage"] = new Array(3, 3); // delay between rotating images (in seconds)
intervals["rImage"][0] *= 1000;
intervals["rImage"][1] *= 1000;
image_lists = new Array();
image_indexes = new Array();


image_indexes["rImage"] = 0;
image_lists["rImage"] = new Array();
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_1-AAPT.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_2-AlMills.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_9-ChanMcL.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_6-CoCo.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_8-HPind.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_7-Reef.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_4-SnowParkes.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_5-Street.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_3-WiseBerry.png");
image_lists["rImage"][image_indexes["rImage"]++] = new imageItem("/static/images/logos/thumbs/ClientTesimls_10-Sanit.png");

MM_preloadImages('/static/images/homeContent0.png'
        , '/static/images/homeContent1.png'
        , '/static/images/homeContent2.png'
        , '/static/images/homeContent3.png'
        , '/static/images/homeContent4.png'
        , '/static/images/homeContent5.png'
        );

image_indexes["hImage"] = 0;
image_lists["hImage"] = new Array();
image_lists["hImage"][image_indexes["hImage"]++] = new imageItem("/static/images/homeContent0.png");
image_lists["hImage"][image_indexes["hImage"]++] = new imageItem("/static/images/homeContent1.png");
image_lists["hImage"][image_indexes["hImage"]++] = new imageItem("/static/images/homeContent2.png");
image_lists["hImage"][image_indexes["hImage"]++] = new imageItem("/static/images/homeContent3.png");
image_lists["hImage"][image_indexes["hImage"]++] = new imageItem("/static/images/homeContent4.png");
image_lists["hImage"][image_indexes["hImage"]++] = new imageItem("/static/images/homeContent5.png");

function imageItem(image_location) {
    this.image_item = new Image();
    this.image_item.src = image_location;
}

function get_ImageItemLocation(imageObj) {
    return(imageObj.image_item.src);
}

function generate(x, y) {
    var range = y - x + 1;
    return Math.floor(Math.random() * range) + x;
}
function getNextImage(place) {
    number_of_images = image_lists[place].length;
    if (random_display) {
        image_indexes[place] = generate(0, number_of_images - 1);
    } else {
        image_indexes[place] = (image_indexes[place] + 1) % number_of_images;
    }

    var new_image = get_ImageItemLocation(image_lists[place][image_indexes[place]]);

    return(new_image);
}

/**
 * New image rotator implementation (incompleted - still using globals above)
 */
(function() {

    var ImageRotator = function(imageElId) {
        this.imageElId = imageElId;
    };

    var proto = ImageRotator.prototype;

    proto.refresh = function() {
        var imgEl = document.getElementById(this.imageElId);
        if (imgEl) {
            imgEl.src = getNextImage(this.imageElId);
        }
    };

    proto.getNextInterval = function() {
        if (image_indexes[this.imageElId] === ( image_lists[this.imageElId].length - 1 )) {
            return intervals[this.imageElId][1];
        } else {
            return intervals[this.imageElId][0];
        }
    };

    proto.start = function() {
        var that = this;

        this.timeoutFunction = function() {
            that.refresh();
            setTimeout(that.timeoutFunction, that.getNextInterval());
        };

        setTimeout(this.timeoutFunction, this.getNextInterval());
    };

    function startAnimation(imageElId) {
        var rotator = new ImageRotator(imageElId);
        rotator.start();
    }

    var init = function() {
        startAnimation('hImage');
        startAnimation('rImage');
        PeopleInsite.login.init();
        PeopleInsite.webinar.init();
    };

    YAHOO.util.Event.onDOMReady(init);

}());

/**
 * Webinar request form
 */
(function() {

    PeopleInsite.webinar = {};

    var webinarValidationSettings = {
        formName : "webinarForm",
        validators : [
            {
                name : "enqName",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqNameErrorContainer",
                        message: "Please provide the name of the person attending the webinar"
                    }
                ]
            },
            {
                name : "enqCompany",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqCompanyErrorContainer",
                        message: "Please provide the name of company or organisation"
                    }
                ]
            },
            {
                name : "enqSate",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqSateErrorContainer",
                        message: "Please provide the organisation's state"
                    }
                ]
            },
            {
                name : "enqPhone",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqPhoneErrorContainer",
                        message: "Please provide a contact phone number"
                    }
                ]
            },
            {
                name : "enqEmail",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqEmailErrorContainer",
                        message: "Please provide an email address"
                    }
                ]
            },
            {
                name : "enqBusType",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqBusTypeErrorContainer",
                        message: "Please select the business type"
                    }
                ]
            },
            {
                name : "enqBusIndustry",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqBusIndustryErrorContainer",
                        message: "Please select the business industry"
                    }
                ]
            },
            {
                name : "enqNoOfEmp",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqNoOfEmpErrorContainer",
                        message: "Please specify the number of employees within your business"
                    }
                ]
            },
            {
                name : "enqProduct",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqProductErrorContainer",
                        message: "Please select the product you're interested in"
                    }
                ]
            },
            {
                name : "enqAbout",
                validators: [
                    {
                        validator : PeopleInsite.validation.requiredString,
                        containerId: "enqAboutErrorContainer",
                        message: "Please indicate how you heard about PeopleInsite"
                    }
                ]
            }
        ]
    };

    var formSubmitListener = function(e) {
        YAHOO.util.Event.preventDefault(e);

//        var calendar = this.calendar;
        var value = "";
        var first = true;
        // concatenate the selected date values
//        if (calendar) {
//            var selectedDates = calendar.getSelectedDates();
//            for (var i = 0; i < selectedDates.length; ++i) {
//                var date = selectedDates[i];
//                if (!first) {
//                    value += ",";
//                } else {
//                    first = false;
//                }
//                value += PeopleInsite.calendar.formatSystemJSDate(date);
//            }
//        }

//        YAHOO.util.Dom.get("webinarDate").value = value;

        if (PeopleInsite.validation.validate(webinarValidationSettings)) {
            // submit the form
            this.form.submit();
        }
    };

    PeopleInsite.webinar.init = function() {
//        var calendarDiv = YAHOO.util.Dom.get("webinarDateCal");
//        if (calendarDiv) {
//            var cal1 = new YAHOO.widget.Calendar(calendarDiv);
//            cal1.render();
//            var formEl = PeopleInsite.dom.getFormById("webinarForm");
//            YAHOO.util.Event.addListener(formEl, "submit", formSubmitListener, { form: formEl, calendar: cal1 }, true);
//        }
        var calendarSelect = YAHOO.util.Dom.get("webinarDate");
        if (calendarSelect) {
            var now = new Date();
            var today = now.getDay();
            // calculate the number of days until the next monday
            var nextMondayOffset = 1 - today;   // 1 is Monday
            if (nextMondayOffset <= 0) {
                nextMondayOffset += 7;
            }
            var nextMonday = new Date();
            nextMonday.setTime(now.getTime()+nextMondayOffset * (24*60*60*1000));
            
            var dateOptions = [];
            var current = nextMonday;
            var oneWeek = 7 * 24 * 60 * 60 * 1000;
            for (var i = 0; i < 4; i++) {
                dateOptions[i] = new Option(PeopleInsite.calendar.formatJSDisplayDayDate(current), PeopleInsite.calendar.formatSystemJSDate(current), false, false);
                current.setTime(current.getTime() + oneWeek);
            }
            PeopleInsite.dom.select.setOptions("webinarDate", dateOptions);

            var formEl = PeopleInsite.dom.getFormById("webinarForm");
            YAHOO.util.Event.addListener(formEl, "submit", formSubmitListener, { form: formEl }, true);
        }
    };
})();
/*
(function() {
    var Dom = YAHOO.util.Dom;
    var e1 = null, e2 = null;

    function reinviteListener(e) {
        var formEl = Dom.getAncestorByTagName("reinviteBtn", "form");
        if (formEl) {
            if ((e1 >= 0) && (e2 >= 0)) {
                formEl.action = "/registration/reinvite?e1="+e1+"&e2="+e2;
            }
        }
    }
    function init() {
        var btn = YAHOO.util.Dom.get("reinviteBtn");
        if (btn != null) {
            YAHOO.util.Event.addListener(btn, "click", reinviteListener);

            var e1El = Dom.get("e1");
            var e2El = Dom.get("e2");
            if (e1El && e2El) {
                e1 = Math.floor(Math.random()*11);
                e2 = Math.floor(Math.random()*11);
                e1El.innerHTML = e1;
                e2El.innerHTML = e2;
            }
        }
    }
    YAHOO.util.Event.onDOMReady(init);
})();  */