﻿    /**
    * details-lookup.js
    * Details look up for previous details
    *
    * @namespace dd.lookup
    * @version 1
    */

    /**
    * Registers 'dd' as a window namespace
    * Creates the dd.namespace(@param) namespace function.
    */
    if (typeof dd == 'undefined') { var dd = {}; }
    dd.namespace = function() { var a = arguments, e = null, c, b, d; for (c = 0; c < a.length; c++) { d = a[c].split('.'); e = dd; for (b = (d[0] == 'dd') ? 1 : 0; b < d.length; b++) { e[d[b]] = e[d[b]] || {}; e = e[d[b]] } } return e };

    
    /**
    * Creates the dd.lookup namespace
    */
    dd.namespace('dd.lookup');
    
    /**
    * dd.lookup functions
    * @namespace dd.lookup
    */
    dd.lookup = {

        /**
        * Returns a cross browser XMLHttp object
        */
        _createTransport: function() {
            if (typeof XMLHttpRequest != "undefined") {
                return new XMLHttpRequest();
            }
            else if (typeof ActiveXObject != "undefined") {
                var http = null;
                try {
                    http = new ActiveXObject("MSXML2.XmlHttp.6.0");
                    return http;
                }
                catch (ex) {
                    try {
                        http = new ActiveXObject("MSXML2.XmlHttp.3.0");
                        return http;
                    }
                    catch (ex2) {
                        throw Error("Cannot create XHR object");
                    }
                }
            }
        },

        /**
        * Executes an AJAX Request
        * @param url {String} The url to make a request oo
        * @param callback {Object} The object containing success / failure methods
        */
        doRequest: function(url, callback) {
            var _t = this._createTransport();
            _t.open('get', url, true);
            _t.onreadystatechange = function() {
                if (_t.readyState == 4) {
                    if (_t.status == 200) {
                        callback.success(_t);
                    }
                }
            }
            _t.send(null);
        },

        /**
        * Performs a lookup
        */
        doLookup: function() {
            var email = document.getElementById('txtPreviousDetails_EmailAddress').value;
            var password = document.getElementById('txtPreviousDetails_Password').value;
            var url = '/scripts/details-lookup.aspx?email=' + email + '&password=' + password;

            var callback = {
                success: function(o) {
                    if (o.responseText == 'error') {
                        document.getElementById('details-lookup-results-container').style.display = 'none';
                        document.getElementById('details-lookup-error').innerHTML = 'We couldn\'t find '
                            + 'any details for you. Please enter your details below:';
                    }
                    else {
                        document.getElementById('__detailslookupobj').value = o.responseText;
                        var obj = eval("(" + o.responseText + ")");
                        var sel = document.getElementById('details-lookup-results');
                        sel.length = 0;
                        for (var i = 0; i < obj.length; i++) {
                            var _o = document.createElement('option');
                            _o.text = obj[i].summary;
                            _o.value = i;
                            document.getElementById('details-lookup-results').options.add(_o);
                        }

                        document.getElementById('details-lookup-results-container').style.display = 'block';
                        document.getElementById('details-lookup-error').innerHTML = '';
                    }
                }
            };

            this.doRequest(url, callback);
            return false;
        },

        /**
        * Populates the textboxes when a result has been chosen
        */
        chooseResult: function() {
            var obj = document.getElementById('details-lookup-results');
            var json = eval("(" + document.getElementById('__detailslookupobj').value + ")");

            try {
                document.getElementById(window['dl_txtFirstName']).value = json[obj.value].firstname;
            }
            catch (o) {
            }

            try {
                document.getElementById(window['dl_txtSurname']).value = json[obj.value].surname;
            }
            catch (o2) {
            }

            try {
                document.getElementById(window['dl_txtEmail']).value = document.getElementById('txtPreviousDetails_EmailAddress').value;
            } catch (o3) {
            }

            try {
                document.getElementById(window['dl_txtAddress1']).value = json[obj.value].address1;
            }
            catch (o4) {
            }

            try {
                document.getElementById(window['dl_txtAddress2']).value = json[obj.value].address2;
            } catch (o5) {
            }

            try {
                document.getElementById(window['dl_txtAddress3']).value = json[obj.value].address3;
            }
            catch (o6) {
            }

            try {
                document.getElementById(window['dl_txtAddress4']).value = json[obj.value].address4;
            }
            catch (o7) {
            }

            try {
                document.getElementById(window['dl_txtPostcode']).value = json[obj.value].postcode;
            } catch (o8) {
            }

            try {
                document.getElementById(window['dl_txtHomePhone']).value = json[obj.value].homephone;
            }
            catch (o9) {

            }

            try {
                document.getElementById(window['dl_txtDayPhone']).value = json[obj.value].dayphone;
            }
            catch (o10) {
            }

            try {
                for (var i = 0; i < document.getElementById(window['dl_ddlDay']).options.length; i++) {
                    if (document.getElementById(window['dl_ddlDay']).options[i].value == json[obj.value].dayofbirth) {
                        document.getElementById(window['dl_ddlDay']).selectedIndex = i;
                    }
                }
            } catch (o11) {
            }

            try {
                for (var j = 0; j < document.getElementById(window['dl_ddlMonth']).options.length; j++) {
                    if (document.getElementById(window['dl_ddlMonth']).options[j].value == json[obj.value].monthofbirth) {
                        document.getElementById(window['dl_ddlMonth']).selectedIndex = j;
                    }
                }
            }
            catch (o12) {
            }

            try {
                for (var k = 0; k < document.getElementById(window['dl_ddlYear']).options.length; k++) {
                    if (document.getElementById(window['dl_ddlYear']).options[k].value == json[obj.value].yearofbirth) {
                        document.getElementById(window['dl_ddlYear']).selectedIndex = k;
                    }
                }
            }
            catch (o13) {
            }

            try {
                for (var m = 0; m < document.getElementById(window['dl_ddlSex']).options.length; m++) {
                    if (document.getElementById(window['dl_ddlSex']).options[m].text.toLowerCase() == json[obj.value].sex.toLowerCase()) {
                        document.getElementById(window['dl_ddlSex']).selectedIndex = m;
                    }
                }
            }
            catch (o14) {
            }

            dd.lookup.resetForm();
        },

        /**
        * Resets the form to it's original state
        */
        resetForm: function() {
            document.getElementById('txtPreviousDetails_EmailAddress').value = '';
            document.getElementById('txtPreviousDetails_Password').value = '';

            var sel = document.getElementById('details-lookup-results');
            sel.length = 0;

            document.getElementById('details-lookup-results-container').style.display = 'none';
            document.getElementById('details-lookup-error').innerHTML = '';
        },

        /**
        * Sends a password if they've forgotten it
        */
        fp: function() {
            var email = document.getElementById('txtPreviousDetails_EmailAddress').value;
            var span = document.getElementById('details-lookup-fp');
            if (email == '') {
                alert('Please enter your email address');
            }
            else {
                var url = '/scripts/details-lookup.aspx?fp=' + email;
                var callback = {
                    success: function(o) {
                        span.innerHTML = '&nbsp;' + o.responseText;
                    }
                };
                this.doRequest(url, callback);
            }

            return false;
        }
    };