
var EHARMONY = window.EHARMONY || {};
EHARMONY.corp = EHARMONY.corp || {};


//
// EHARMONY.corp.locale
//
// Usage:
// 
// if (EHARMONY.corp.locale.CP) {
// if (EHARMONY.corp.locale.toString() === "CP") {
//
EHARMONY.corp.locale = (function () {
    var localeObject = {
        US: false,
        CA: false,
        AU: false,
        UK: false,
        CP: false,
        BR: false,
        JP: false,
        toString: function () {
            return "";
        },
        submitDomain: function () {
            return "";
        }
    };
    
    switch (document.location.host) {
    case "www.eharmony.com":
    case "dating.eharmony.com":
    case "www-dev.eharmony.com":
    case "local.eharmony.com":
        localeObject.US = true;
        localeObject.submitDomain = function () {
            return "www.eharmony.com";
        };
        localeObject.toString = function () {
            return "US";
        };
        break;
    case "www.eharmony.ca":
    case "www-dev.eharmony.ca":
    case "local.eharmony.ca":
        localeObject.CA = true;
        localeObject.submitDomain = function () {
            return "www.eharmony.ca";
        };
        localeObject.toString = function () {
            return "CA";
        };
        break;
    case "bigpond.eharmony.com.au": 
    case "www.eharmony.com.au":
    case "www-dev.eharmony.com.au":
    case "local.eharmony.com.au":
        localeObject.AU = true;
        localeObject.submitDomain = function () {
            return "www.eharmony.com.au";
        };
        localeObject.toString = function () {
            return "AU";
        };
        break;
    case "www.eharmony.co.uk":
    case "www-dev.eharmony.co.uk":
    case "local.eharmony.co.uk":
        localeObject.UK = true;
        localeObject.submitDomain = function () {
            return "www.eharmony.co.uk";
        };
        localeObject.toString = function () {
            return "UK";
        };
        break;
    case "www.compatiblepartners.net":
    case "www-dev.compatiblepartners.net":
    case "local.compatiblepartners.net":
        localeObject.CP = true;
        localeObject.submitDomain = function () {
            return "www.compatiblepartners.net";
        };
        localeObject.toString = function () {
            return "CP";
        };
        break;
    case "www.eharmony.com.br":
    case "www-dev.eharmony.com.br":
    case "local.eharmony.com.br":
        localeObject.BR = true;
        localeObject.submitDomain = function () {
            return "www.eharmony.com.br";
        };
        localeObject.toString = function () {
            return "BR";
        };
        break;
    case "www.eharmony.co.jp":
    case "www-dev.eharmony.co.jp":
    case "local.eharmony.co.jp":
    case "www.eharmony.jp":
    case "www-dev.eharmony.jp":
    case "local.eharmony.jp":
        localeObject.JP = true;
        localeObject.submitDomain = function () {
            return "www.eharmony.co.jp";
        };
        localeObject.toString = function () {
            return "JP";
        };
        break;
    }
    
    return localeObject;
}());


//
// EHARMONY.corp.utils
//
EHARMONY.corp.utils = {
    
    getParameter: function (queryString, parameterName) {
        // Add "=" to the parameter name (i.e. parameterName=value)
        parameterName += "=";
        var begin,
            end;
        
        if (queryString.length > 0) {
            // Find the beginning of the string
            begin = queryString.indexOf(parameterName);
            // If the parameter name is not found, ignore, otherwise return the value
            if (begin !== -1) {
                // Add the length (integer) to the beginning
                begin += parameterName.length;
                // Multiple parameters are separated by the "&" sign
                end = queryString.indexOf("&", begin);
                if (end === -1) {
                    end = queryString.length;
                } // End if
                
                // Return the string
                return decodeURIComponent(queryString.substring(begin, end));
            } // End if
        } // End if
        return "";
    } // End function
};


// Adding "trim" to String.prototype, instead of having it in utils
if (typeof String.prototype.trim !== 'function') {
    String.prototype.trim = function () {
        return this.replace(/^\\s*(\\S*(\\s+\\S+)*)\\s*$/, "$1");
    };
}


// only create EHARMONY.reg if jQuery is included
if (typeof jQuery === 'function') {
    
            
    
    //
    // EHARMONY.reg
    //
    // Dependencies:
    // jQuery
    // EHARMONY.corp.locale
    // String.protoype.trim
    //
    // Does not currently support multiple registration forms on the same page
    //
    EHARMONY.reg = {
        
        appendAffiliateTracking: function () {
            var dList = document.location.search.substring(1),
                dAr = dList.split("&"),
                rAr = [],
                key,
                i;
                
            for (i = 0; i < dAr.length; i += 1) {
                rAr = dAr[i].split("=");
                if (rAr.length === 2) {
                    rAr[0] = rAr[0].replace(new RegExp('[^a-zA-Z0-9-_]+', 'g'), '');
                    rAr[1] = rAr[1].replace(new RegExp('[^a-zA-Z0-9-_]+', 'g'), '');
                    
                    rAr[0] = rAr[0].substr(0, 70);
                    rAr[1] = rAr[1].substr(0, 70);
                    
                    // Only using case-insensitive version for comparisons
                    key = rAr[0].toLowerCase();
                    
                    switch (key) {
                    case 'name':
                    case 'firstname':
                        $("input[name='firstName']", EHARMONY.reg.$form).val(decodeURIComponent(rAr[1]));
                        break;
                    case 'zipcode':
                    case 'postalcode':
                    case 'postcode':
                        $("input[name='postalCode']", EHARMONY.reg.$form).val(decodeURIComponent(rAr[1]));
                        break;
                    case 'g':
                    case 'gender':
                        $("select[name='gender']", EHARMONY.reg.$form).val(decodeURIComponent(rAr[1]));
                        $("select[name='gender2']", EHARMONY.reg.$form).val(decodeURIComponent(rAr[1]));
                        $("select[name='genderPreference']", EHARMONY.reg.$form).val(decodeURIComponent(rAr[1]));
                        break;
                    case 'country':
                        $("select[name='country']", EHARMONY.reg.$form).val(decodeURIComponent(rAr[1]));
                        break;
                    case 'findeh':
                        $("select[name='findEH']", EHARMONY.reg.$form).val(decodeURIComponent(rAr[1]));
                        break;
                    case 'email':
                    case 'emailaddress':
                    case 'confirmemail':
                    case 'password':
                        break;
                    default:
                        if ($("[name=" + rAr[0] + "]", EHARMONY.reg.$form).length) {
                            $(" [name=" + rAr[0] + "]", EHARMONY.reg.$form).val(rAr[1]);
                        } else {
                            EHARMONY.reg.$form.append("<input type='hidden' name='" + rAr[0] + "' value='" + rAr[1] + "' />");
                        }
                    }
                }
            }
        },
        
        setAction: function () {
            //EHARMONY.reg.form.action = "https://" + document.location.host + "/singles/servlet/homeRegS";
            
            // If locale exists, force appropriate form action URL.  Otherwise, leave as defined in document.
            if (EHARMONY.corp.locale.submitDomain() !== "") {
                EHARMONY.reg.form.action = "https://" + EHARMONY.corp.locale.submitDomain() + "/singles/servlet/homeRegS";
            }
        },
        
        shuffleFindEHValues: function () {
            if ($("select[name=findEH]", EHARMONY.reg.$form).length) {
                
                // Select all the findEH options (except "Please select...")
                var options = $("select[name=findEH] option", EHARMONY.reg.$form).not(":eq(0)"),
                    tempHTML,
                    tempValue,
                    randomNumber;
                
                options.each(function () {
                    
                    // Choose a random option
                    randomNumber = Math.floor(Math.random() * 16) % options.length;
                    
                    // Then swap HTML and values with that random option.
                    tempHTML = $(this).html();
                    tempValue = $(this).val();
                    $(this).html(options.eq(randomNumber).html());
                    $(this).val(options.eq(randomNumber).val());
                    options.eq(randomNumber).html(tempHTML);
                    options.eq(randomNumber).val(tempValue);
                });
            }
        },
        
        insertLandingPageTrackingValue: function () {
            var landingPageTrackingValue = '';
            
            // Checking for s.prop31
            if (typeof s !== 'undefined' && typeof s.prop31 !== 'undefined') {
                landingPageTrackingValue = s.prop31;
            }
            
            // Using parent-page if s.prop31 == ''
            if (landingPageTrackingValue === '' && typeof sbms !== 'undefined' && typeof sbms.parent !== 'undefined' && typeof sbms.page !== 'undefined') {
                landingPageTrackingValue = sbms.parent + '-' + sbms.page;
            }
            
            // Truncate if it exceeds the 30 character limit set in the database
            if (landingPageTrackingValue.length >= 30) {
                landingPageTrackingValue = landingPageTrackingValue.substring(0,29);
            }
            
            // Set it to the landingPage hidden input field, or append it to the reg form if there isn't one
            if ($("input[name=landingPage]", EHARMONY.reg.$form).length) {
                $("input[name=landingPage]", EHARMONY.reg.$form).val(landingPageTrackingValue);
                
            } else {
                EHARMONY.reg.$form.append('<input type="hidden" name="landingPage" value="' + landingPageTrackingValue + '" />');
            }
        },
        
        setRegActionToLocale: function () {
            
            // Restrict to eHarmony domains
            if (!EHARMONY.corp.locale.CP && EHARMONY.corp.locale.toString() !== "") {
                
                var submitDomain = EHARMONY.corp.locale.submitDomain();
                
                switch ($("[name=country]", EHARMONY.reg.$form).val()) {
                case "1":
                    submitDomain = "www.eharmony.com";
                    break;
                case "14":
                    submitDomain = "www.eharmony.com.au";
                    break;
                case "39":
                    submitDomain = "www.eharmony.ca";
                    break;
                case "215":
                    // Only redirect the user if they're not already on UK
                    if (!EHARMONY.corp.locale.UK) {
                        document.location = "http://www.eharmony.co.uk/register";
                    }
                    submitDomain = "www.eharmony.co.uk";
                    break;
                case "31":
                    // Only redirect the user if they're not already on BR
                    if (!EHARMONY.corp.locale.BR) {
                        document.location = "http://www.eharmony.com.br";
                    }
                    submitDomain = "www.eharmony.com.br";
                    break;
                }
    
                EHARMONY.reg.form.action = "https://" + submitDomain + "/singles/servlet/homeRegS";
            }
        },
        
        createCountryDropdown: function () {
            var //myOptions = {},
                //newOptions = '',
                literalOptions = '';
            
            if (EHARMONY.corp.locale.BR) {
                //myOptions = {31: 'Brasil', 2: 'Afeganistão', 188: 'África do Sul', 3: 'Albânia', 79: 'Alemanha', 6: 'Andorra', 7: 'Angola', 8: 'Anguila', 9: 'Antártica', 10: 'Antígua', 143: 'Antilhas Holandesas', 179: 'Arábia Saudita', 4: 'Argélia', 11: 'Argentina', 12: 'Armênia', 13: 'Aruba', 14: 'Austrália', 15: 'Áustria',  16: 'Azerbaidjão', 17: 'Bahamas', 18: 'Bahrain',  19: 'Bangladesh', 20: 'Barbados', 21: 'Belarus',  22: 'Bélgica', 23: 'Belize', 24: 'Benin', 25: 'Bermuda', 27: 'Bolívia', 28: 'Bósnia / Herzegóvina', 29: 'Botsuana', 32: 'Br. Indian Oc. Territory', 33: 'Brunei', 34: 'Bulgária', 35: 'Burkina Faso', 36: 'Burundi', 26: 'Butão', 40: 'Cabo Verde', 38: 'Camarões',  37: 'Camboja', 39: 'Canadá', 166: 'Catar', 104: 'Cazaquistão', 43: 'Chade', 44: 'Chile', 45: 'China', 54: 'Chipre', 219: 'Cidade Estado do Vaticano', 183: 'Cingapura', 48: 'Colômbia', 49: 'Comoros', 50: 'Congo', 108: 'Coreia,  Norte', 107: 'Coreia', 52: 'Costa Rica', 53: 'Croácia', 56: 'Dinamarca', 57: 'Djibuti', 58: 'Dominica',  62: 'Egito',  63: 'El Salvador', 214: 'Emirados Árabes Unidos', 61: 'Equador', 65: 'Eritreia', 184: 'Eslováquia', 185: 'Eslovênia', 190: 'Espanha', 1: 'Estados Unidos',  
                //  66: 'Estônia',  67: 'Etiópia', 161: 'Filipinas', 71: 'Finlândia', 72: 'França', 76: 'Gabão', 77: 'Gâmbia', 80: 'Gana', 189: 'Geórgia do Sul', 78: 'Geórgia', 81: 'Gibraltar',  
                //  84: 'Granada', 82: 'Grécia', 83: 'Groenlândia', 85: 'Guadalupe', 86: 'Guam', 87: 'Guatemala', 73: 'Guiana Francesa', 90: 'Guiana', 64: 'Guiné Equatorial', 89: 'Guiné-Bissau', 88: 'Guiné', 91: 'Haiti', 92: 'Heard', 144: 'Holanda', 93: 'Honduras', 94: 'Hungria', 226: 'Iêmen', 30: 'Ilha Bouvet', 46: 'Ilha Christmas', 151: 'Ilha Norfolk', 162: 'Ilha Pitcairn', 41: 'Ilhas Cayman', 47: 'Ilhas Cocos', 51: 'Ilhas Cook', 68: 'Ilhas Falkland', 69: 'Ilhas Faroe', 70: 'Ilhas Fiji', 126: 'Ilhas Marshall', 186: 'Ilhas Salomão', 222: 'Ilhas Virgens (Br.)', 223: 'Ilhas Virgens (EUA)', 96: 'Índia', 97: 'Indonésia', 232: 'Iraque', 98: 'Irlanda', 95: 'Islândia', 99: 'Israel', 100: 'Itália', 101: 'Jamaica', 102: 'Japão', 103: 'Jordânia', 106: 'Kiribati', 109: 'Kuwait', 111: 'Laos', 114: 'Lesoto', 112: 'Letônia', 113: 'Líbano', 115: 'Libéria', 233: 'Líbia', 116: 'Liechtenstein', 117: 'Lituânia', 118: 'Luxemburgo', 119: 'Macedônia', 120: 'Madagascar', 122: 'Malásia', 121: 'Malaui', 123: 'Maldivas', 124: 'Mali',  125: 'Malta',  137: 'Marrocos', 127: 'Martinica', 129: 'Maurício', 128: 'Mauritânia', 130: 'Mayotte', 131: 'México', 132: 'Micronésia', 138: 'Moçambique', 133: 'Moldova', 134: 'Mônaco', 135: 'Mongólia', 136: 'Montserrat', 139: 'Myanmar', 152: 'N. Ilhas Mariana', 140: 'Namíbia', 141: 'Nauru', 142: 'Nepal', 147: 'Nicarágua', 148: 'Niger', 149: 'Nigéria',  150: 'Niue', 153: 'Noruega', 145: 'Nova Caledônia', 146: 'Nova Zelândia', 154: 'Omã', 156: 'Palau', 157: 'Panamá', 158: 'Papua Nova Guiné', 155: 'Paquistão',  
                //  159: 'Paraguai', 160: 'Peru', 74: 'Polinésia Francesa', 163: 'Polônia',  165: 'Porto Rico', 164: 'Portugal', 105: 'Quênia', 110: 'Quirguistão', 215: 'Reino Unido', 42: 'República Centro Africana', 55: 'República Checa', 59: 'República Dominicana', 167: 'Reunião', 168: 'Romênia', 170: 'Ruanda', 169: 'Rússia', 225: 'Saara Ocidental', 5: 'Samoa Americana', 176: 'Samoa', 177: 'San Marino',  178: 'São Tomé', 180: 'Senegal', 182: 'Serra Leoa', 181: 'Seychelles', 198: 'Síria', 187: 'Somália', 191: 'Sri Lanka',  
                //  172: 'St. Kitts', 174: 'St. Pierre', 175: 'St. Vincent', 171: 'Sta. Helena', 173: 'Sta. Lucia', 195: 'Suazilândia', 192: 'Sudão', 196: 'Suécia', 197: 'Suíça', 193: 'Suriname', 194: 'Svalbard', 202: 'Tailândia', 199: 'Taiwan', 200: 'Tajiquistão', 201: 'Tanzânia', 75: 'Territórios S. Franceses', 60: 'Timor Leste', 203: 'Togo', 204: 'Tokelau', 205: 'Tonga', 206: 'Trinidad e Tobago', 207: 'Tunísia', 209: 'Turcomenistão', 210: 'Turks e Caicos', 208: 'Turquia', 211: 'Tuvalu', 213: 'Ucrânia', 212: 'Uganda', 
                //  216: 'Uruguai', 217: 'Uzbequistão', 218: 'Vanuatu', 220: 'Venezuela', 221: 'Vietnã', 224: 'Wallis', 228: 'Zâmbia', 229: 'Zimbábue'};
                
                literalOptions = '<option value="31">Brasil</option><option value="2">Afeganistão</option><option value="188">África do Sul</option><option value="3">Albânia</option><option value="79">Alemanha</option><option value="6">Andorra</option><option value="7">Angola</option><option value="8">Anguila</option><option value="9">Antártica</option><option value="10">Antígua</option><option value="143">Antilhas Holandesas</option><option value="179">Arábia Saudita</option><option value="4">Argélia</option><option value="11">Argentina</option><option value="12">Armênia</option><option value="13">Aruba</option><option value="14">Austrália</option><option value="15">Áustria</option><option value="16">Azerbaidjão</option><option value="17">Bahamas</option><option value="18">Bahrain</option><option value="19">Bangladesh</option><option value="20">Barbados</option><option value="21">Belarus</option><option value="22">Bélgica</option><option value="23">Belize</option><option value="24">Benin</option><option value="25">Bermuda</option><option value="27">Bolívia</option><option value="28">Bósnia / Herzegóvina</option><option value="29">Botsuana</option><option value="32">Br. Indian Oc. Territory</option><option value="33">Brunei</option><option value="34">Bulgária</option><option value="35">Burkina Faso</option><option value="36">Burundi</option><option value="26">Butão</option><option value="40">Cabo Verde</option><option value="38">Camarões</option><option value="37">Camboja</option><option value="39">Canadá</option><option value="166">Catar</option><option value="104">Cazaquistão</option><option value="43">Chade</option><option value="44">Chile</option><option value="45">China</option><option value="54">Chipre</option><option value="219">Cidade Estado do Vaticano</option><option value="183">Cingapura</option><option value="48">Colômbia</option><option value="49">Comoros</option><option value="50">Congo</option><option value="108">Coreia,  Norte</option><option value="107">Coreia</option><option value="52">Costa Rica</option><option value="53">Croácia</option><option value="56">Dinamarca</option><option value="57">Djibuti</option><option value="58">Dominica</option><option value="62">Egito</option><option value="63">El Salvador</option><option value="214">Emirados Árabes Unidos</option><option value="61">Equador</option><option value="65">Eritreia</option><option value="184">Eslováquia</option><option value="185">Eslovênia</option><option value="190">Espanha</option><option value="1">Estados Unidos</option><option value="66">Estônia</option><option value="67">Etiópia</option><option value="161">Filipinas</option><option value="71">Finlândia</option><option value="72">França</option><option value="76">Gabão</option><option value="77">Gâmbia</option><option value="80">Gana</option><option value="189">Geórgia do Sul</option><option value="78">Geórgia</option><option value="81">Gibraltar</option><option value="84">Granada</option><option value="82">Grécia</option><option value="83">Groenlândia</option><option value="85">Guadalupe</option><option value="86">Guam</option><option value="87">Guatemala</option><option value="73">Guiana Francesa</option><option value="90">Guiana</option><option value="64">Guiné Equatorial</option><option value="89">Guiné-Bissau</option><option value="88">Guiné</option><option value="91">Haiti</option><option value="92">Heard</option><option value="144">Holanda</option><option value="93">Honduras</option><option value="94">Hungria</option><option value="226">Iêmen</option><option value="30">Ilha Bouvet</option><option value="46">Ilha Christmas</option><option value="151">Ilha Norfolk</option><option value="162">Ilha Pitcairn</option><option value="41">Ilhas Cayman</option><option value="47">Ilhas Cocos</option><option value="51">Ilhas Cook</option><option value="68">Ilhas Falkland</option><option value="69">Ilhas Faroe</option><option value="70">Ilhas Fiji</option><option value="126">Ilhas Marshall</option><option value="186">Ilhas Salomão</option><option value="222">Ilhas Virgens (Br.)</option><option value="223">Ilhas Virgens (EUA)</option><option value="96">Índia</option><option value="97">Indonésia</option><option value="232">Iraque</option><option value="98">Irlanda</option><option value="95">Islândia</option><option value="99">Israel</option><option value="100">Itália</option><option value="101">Jamaica</option><option value="102">Japão</option><option value="103">Jordânia</option><option value="106">Kiribati</option><option value="109">Kuwait</option><option value="111">Laos</option><option value="114">Lesoto</option><option value="112">Letônia</option><option value="113">Líbano</option><option value="115">Libéria</option><option value="233">Líbia</option><option value="116">Liechtenstein</option><option value="117">Lituânia</option><option value="118">Luxemburgo</option><option value="119">Macedônia</option><option value="120">Madagascar</option><option value="122">Malásia</option><option value="121">Malaui</option><option value="123">Maldivas</option><option value="124">Mali</option><option value="125">Malta</option><option value="137">Marrocos</option><option value="127">Martinica</option><option value="129">Maurício</option><option value="128">Mauritânia</option><option value="130">Mayotte</option><option value="131">México</option><option value="132">Micronésia</option><option value="138">Moçambique</option><option value="133">Moldova</option><option value="134">Mônaco</option><option value="135">Mongólia</option><option value="136">Montserrat</option><option value="139">Myanmar</option><option value="152">N. Ilhas Mariana</option><option value="140">Namíbia</option><option value="141">Nauru</option><option value="142">Nepal</option><option value="147">Nicarágua</option><option value="148">Niger</option><option value="149">Nigéria</option><option value="150">Niue</option><option value="153">Noruega</option><option value="145">Nova Caledônia</option><option value="146">Nova Zelândia</option><option value="154">Omã</option><option value="156">Palau</option><option value="157">Panamá</option><option value="158">Papua Nova Guiné</option><option value="155">Paquistão</option><option value="159">Paraguai</option><option value="160">Peru</option><option value="74">Polinésia Francesa</option><option value="163">Polônia</option><option value="165">Porto Rico</option><option value="164">Portugal</option><option value="105">Quênia</option><option value="110">Quirguistão</option><option value="215">Reino Unido</option><option value="42">República Centro Africana</option><option value="55">República Checa</option><option value="59">República Dominicana</option><option value="167">Reunião</option><option value="168">Romênia</option><option value="170">Ruanda</option><option value="169">Rússia</option><option value="225">Saara Ocidental</option><option value="5">Samoa Americana</option><option value="176">Samoa</option><option value="177">San Marino</option><option value="178">São Tomé</option><option value="180">Senegal</option><option value="182">Serra Leoa</option><option value="181">Seychelles</option><option value="198">Síria</option><option value="187">Somália</option><option value="191">Sri Lanka</option><option value="172">St. Kitts</option><option value="174">St. Pierre</option><option value="175">St. Vincent</option><option value="171">Sta. Helena</option><option value="173">Sta. Lucia</option><option value="195">Suazilândia</option><option value="192">Sudão</option><option value="196">Suécia</option><option value="197">Suíça</option><option value="193">Suriname</option><option value="194">Svalbard</option><option value="202">Tailândia</option><option value="199">Taiwan</option><option value="200">Tajiquistão</option><option value="201">Tanzânia</option><option value="75">Territórios S. Franceses</option><option value="60">Timor Leste</option><option value="203">Togo</option><option value="204">Tokelau</option><option value="205">Tonga</option><option value="206">Trinidad e Tobago</option><option value="207">Tunísia</option><option value="209">Turcomenistão</option><option value="210">Turks e Caicos</option><option value="208">Turquia</option><option value="211">Tuvalu</option><option value="213">Ucrânia</option><option value="212">Uganda</option><option value="216">Uruguai</option><option value="217">Uzbequistão</option><option value="218">Vanuatu</option><option value="220">Venezuela</option><option value="221">Vietnã</option><option value="224">Wallis</option><option value="228">Zâmbia</option><option value="229">Zimbábue</option>';
                
            } else {
                //myOptions = {2: 'Afghanistan', 3: 'Albania', 4: 'Algeria', 5: 'American Samoa', 6: 'Andorra', 7: 'Angola', 8: 'Anguilla', 9: 'Antarctica', 10: 'Antigua', 11: 'Argentina', 12: 'Armenia', 13: 'Aruba', 14: 'Australia', 15: 'Austria', 16: 'Azerbaijan', 17: 'Bahamas', 18: 'Bahrain', 19: 'Bangladesh', 20: 'Barbados', 21: 'Belarus', 22: 'Belgium', 23: 'Belize', 24: 'Benin', 25: 'Bermuda', 26: 'Bhutan', 27: 'Bolivia', 28: 'Bosnia / Herzegovina', 29: 'Botswana', 30: 'Bouvet Island', 32: 'Br. Indian Oc. Territory', 31: 'Brazil', 33: 'Brunei', 34: 'Bulgaria', 35: 'Burkina Faso', 36: 'Burundi', 37: 'Cambodia', 38: 'Cameroon', 39: 'Canada', 40: 'Cape Verde', 41: 'Cayman Islands', 42: 'Central African Republic', 43: 'Chad', 44: 'Chile', 45: 'China', 46: 'Christmas Island', 47: 'Cocos Islands', 48: 'Colombia', 49: 'Comoros', 50: 'Congo', 51: 'Cook Islands', 52: 'Costa Rica', 53: 'Croatia', 54: 'Cyprus', 55: 'Czech Republic', 56: 'Denmark', 57: 'Djibouti', 58: 'Dominica', 59: 'Dominican Republic', 60: 'East Timor', 61: 'Ecuador', 62: 'Egypt', 63: 'El Salvador', 64: 'Equatorial Guinea', 65: 'Eritrea', 66: 'Estonia', 67: 'Ethiopia', 68: 'Falkland Islands', 69: 'Faroe Islands', 70: 'Fiji Islands', 71: 'Finland', 72: 'France', 73: 'French Guiana', 74: 'French Polynesia', 75: 'French S. Territories', 76: 'Gabon', 77: 'Gambia,  The', 78: 'Georgia', 79: 'Germany', 80: 'Ghana', 81: 'Gibraltar', 82: 'Greece', 83: 'Greenland', 84: 'Grenada', 85: 'Guadeloupe', 86: 'Guam', 87: 'Guatemala', 88: 'Guinea', 89: 'Guinea-Bissau', 90: 'Guyana', 91: 'Haiti', 92: 'Heard', 93: 'Honduras', 94: 'Hungary', 95: 'Iceland', 96: 'India', 97: 'Indonesia', 232: 'Iraq', 98: 'Ireland', 99: 'Israel', 100: 'Italy', 101: 'Jamaica', 102: 'Japan', 103: 'Jordan', 104: 'Kazakhstan', 105: 'Kenya', 106: 'Kiribati', 107: 'Korea', 108: 'Korea,  North', 109: 'Kuwait', 110: 'Kyrgyzstan', 111: 'Laos', 112: 'Latvia', 113: 'Lebanon', 114: 'Lesotho', 115: 'Liberia', 233: 'Libya', 116: 'Liechtenstein', 117: 'Lithuania', 118: 'Luxembourg', 119: 'Macedonia', 120: 'Madagascar', 121: 'Malawi', 122: 'Malaysia', 123: 'Maldives', 124: 'Mali', 125: 'Malta', 126: 'Marshall Islands', 127: 'Martinique', 128: 'Mauritania', 129: 'Mauritius', 130: 'Mayotte', 131: 'Mexico', 132: 'Micronesia', 133: 'Moldova', 134: 'Monaco', 135: 'Mongolia', 136: 'Montserrat', 137: 'Morocco', 138: 'Mozambique', 139: 'Myanmar', 152: 'N. Mariana Islands', 140: 'Namibia', 141: 'Nauru', 142: 'Nepal', 143: 'Netherlands Antilles', 144: 'Netherlands,  The', 145: 'New Caledonia', 146: 'New Zealand', 147: 'Nicaragua', 148: 'Niger', 149: 'Nigeria', 150: 'Niue', 151: 'Norfolk Island', 153: 'Norway', 154: 'Oman', 155: 'Pakistan', 156: 'Palau', 157: 'Panama', 158: 'Papua New Guinea', 159: 'Paraguay', 160: 'Peru', 161: 'Philippines', 162: 'Pitcairn Island', 163: 'Poland', 164: 'Portugal', 165: 'Puerto Rico', 166: 'Qatar', 167: 'Reunion', 168: 'Romania', 169: 'Russia', 170: 'Rwanda', 176: 'Samoa', 177: 'San Marino', 178: 'Sao Tome', 179: 'Saudi Arabia', 180: 'Senegal', 181: 'Seychelles', 182: 'Sierra Leone', 183: 'Singapore', 184: 'Slovakia', 185: 'Slovenia', 186: 'Solomon Islands', 187: 'Somalia', 188: 'South Africa', 189: 'South Georgia', 190: 'Spain', 191: 'Sri Lanka', 171: 'St. Helena', 172: 'St. Kitts', 173: 'St. Lucia', 174: 'St. Pierre', 175: 'St. Vincent', 192: 'Sudan', 193: 'Suriname', 194: 'Svalbard', 195: 'Swaziland', 196: 'Sweden', 197: 'Switzerland', 198: 'Syria', 199: 'Taiwan', 200: 'Tajikistan', 201: 'Tanzania', 202: 'Thailand', 203: 'Togo', 204: 'Tokelau', 205: 'Tonga', 206: 'Trinidad and Tobago', 207: 'Tunisia', 208: 'Turkey', 209: 'Turkmenistan', 210: 'Turks and Caicos', 211: 'Tuvalu', 212: 'Uganda', 213: 'Ukraine', 214: 'United Arab Emirates', 215: 'United Kingdom', 1: 'United States', 216: 'Uruguay', 217: 'Uzbekistan', 218: 'Vanuatu', 219: 'Vatican City State', 220: 'Venezuela', 221: 'Viet Nam', 222: 'Virgin Islands (Br.)', 223: 'Virgin Islands (US)', 224: 'Wallis', 225: 'Western Sahara', 226: 'Yemen', 228: 'Zambia', 229: 'Zimbabwe'};
                
                literalOptions = '<option value="2">Afghanistan</option><option value="3">Albania</option><option value="4">Algeria</option><option value="5">American Samoa</option><option value="6">Andorra</option><option value="7">Angola</option><option value="8">Anguilla</option><option value="9">Antarctica</option><option value="10">Antigua</option><option value="11">Argentina</option><option value="12">Armenia</option><option value="13">Aruba</option><option value="14">Australia</option><option value="15">Austria</option><option value="16">Azerbaijan</option><option value="17">Bahamas</option><option value="18">Bahrain</option><option value="19">Bangladesh</option><option value="20">Barbados</option><option value="21">Belarus</option><option value="22">Belgium</option><option value="23">Belize</option><option value="24">Benin</option><option value="25">Bermuda</option><option value="26">Bhutan</option><option value="27">Bolivia</option><option value="28">Bosnia / Herzegovina</option><option value="29">Botswana</option><option value="30">Bouvet Island</option><option value="32">Br. Indian Oc. Territory</option><option value="31">Brazil</option><option value="33">Brunei</option><option value="34">Bulgaria</option><option value="35">Burkina Faso</option><option value="36">Burundi</option><option value="37">Cambodia</option><option value="38">Cameroon</option><option value="39">Canada</option><option value="40">Cape Verde</option><option value="41">Cayman Islands</option><option value="42">Central African Republic</option><option value="43">Chad</option><option value="44">Chile</option><option value="45">China</option><option value="46">Christmas Island</option><option value="47">Cocos Islands</option><option value="48">Colombia</option><option value="49">Comoros</option><option value="50">Congo</option><option value="51">Cook Islands</option><option value="52">Costa Rica</option><option value="53">Croatia</option><option value="54">Cyprus</option><option value="55">Czech Republic</option><option value="56">Denmark</option><option value="57">Djibouti</option><option value="58">Dominica</option><option value="59">Dominican Republic</option><option value="60">East Timor</option><option value="61">Ecuador</option><option value="62">Egypt</option><option value="63">El Salvador</option><option value="64">Equatorial Guinea</option><option value="65">Eritrea</option><option value="66">Estonia</option><option value="67">Ethiopia</option><option value="68">Falkland Islands</option><option value="69">Faroe Islands</option><option value="70">Fiji Islands</option><option value="71">Finland</option><option value="72">France</option><option value="73">French Guiana</option><option value="74">French Polynesia</option><option value="75">French S. Territories</option><option value="76">Gabon</option><option value="77">Gambia,  The</option><option value="78">Georgia</option><option value="79">Germany</option><option value="80">Ghana</option><option value="81">Gibraltar</option><option value="82">Greece</option><option value="83">Greenland</option><option value="84">Grenada</option><option value="85">Guadeloupe</option><option value="86">Guam</option><option value="87">Guatemala</option><option value="88">Guinea</option><option value="89">Guinea-Bissau</option><option value="90">Guyana</option><option value="91">Haiti</option><option value="92">Heard</option><option value="93">Honduras</option><option value="94">Hungary</option><option value="95">Iceland</option><option value="96">India</option><option value="97">Indonesia</option><option value="232">Iraq</option><option value="98">Ireland</option><option value="99">Israel</option><option value="100">Italy</option><option value="101">Jamaica</option><option value="102">Japan</option><option value="103">Jordan</option><option value="104">Kazakhstan</option><option value="105">Kenya</option><option value="106">Kiribati</option><option value="107">Korea</option><option value="108">Korea,  North</option><option value="109">Kuwait</option><option value="110">Kyrgyzstan</option><option value="111">Laos</option><option value="112">Latvia</option><option value="113">Lebanon</option><option value="114">Lesotho</option><option value="115">Liberia</option><option value="233">Libya</option><option value="116">Liechtenstein</option><option value="117">Lithuania</option><option value="118">Luxembourg</option><option value="119">Macedonia</option><option value="120">Madagascar</option><option value="121">Malawi</option><option value="122">Malaysia</option><option value="123">Maldives</option><option value="124">Mali</option><option value="125">Malta</option><option value="126">Marshall Islands</option><option value="127">Martinique</option><option value="128">Mauritania</option><option value="129">Mauritius</option><option value="130">Mayotte</option><option value="131">Mexico</option><option value="132">Micronesia</option><option value="133">Moldova</option><option value="134">Monaco</option><option value="135">Mongolia</option><option value="136">Montserrat</option><option value="137">Morocco</option><option value="138">Mozambique</option><option value="139">Myanmar</option><option value="152">N. Mariana Islands</option><option value="140">Namibia</option><option value="141">Nauru</option><option value="142">Nepal</option><option value="143">Netherlands Antilles</option><option value="144">Netherlands,  The</option><option value="145">New Caledonia</option><option value="146">New Zealand</option><option value="147">Nicaragua</option><option value="148">Niger</option><option value="149">Nigeria</option><option value="150">Niue</option><option value="151">Norfolk Island</option><option value="153">Norway</option><option value="154">Oman</option><option value="155">Pakistan</option><option value="156">Palau</option><option value="157">Panama</option><option value="158">Papua New Guinea</option><option value="159">Paraguay</option><option value="160">Peru</option><option value="161">Philippines</option><option value="162">Pitcairn Island</option><option value="163">Poland</option><option value="164">Portugal</option><option value="165">Puerto Rico</option><option value="166">Qatar</option><option value="167">Reunion</option><option value="168">Romania</option><option value="169">Russia</option><option value="170">Rwanda</option><option value="176">Samoa</option><option value="177">San Marino</option><option value="178">Sao Tome</option><option value="179">Saudi Arabia</option><option value="180">Senegal</option><option value="181">Seychelles</option><option value="182">Sierra Leone</option><option value="183">Singapore</option><option value="184">Slovakia</option><option value="185">Slovenia</option><option value="186">Solomon Islands</option><option value="187">Somalia</option><option value="188">South Africa</option><option value="189">South Georgia</option><option value="190">Spain</option><option value="191">Sri Lanka</option><option value="171">St. Helena</option><option value="172">St. Kitts</option><option value="173">St. Lucia</option><option value="174">St. Pierre</option><option value="175">St. Vincent</option><option value="192">Sudan</option><option value="193">Suriname</option><option value="194">Svalbard</option><option value="195">Swaziland</option><option value="196">Sweden</option><option value="197">Switzerland</option><option value="198">Syria</option><option value="199">Taiwan</option><option value="200">Tajikistan</option><option value="201">Tanzania</option><option value="202">Thailand</option><option value="203">Togo</option><option value="204">Tokelau</option><option value="205">Tonga</option><option value="206">Trinidad and Tobago</option><option value="207">Tunisia</option><option value="208">Turkey</option><option value="209">Turkmenistan</option><option value="210">Turks and Caicos</option><option value="211">Tuvalu</option><option value="212">Uganda</option><option value="213">Ukraine</option><option value="214">United Arab Emirates</option><option value="215">United Kingdom</option><option value="1">United States</option><option value="216">Uruguay</option><option value="217">Uzbekistan</option><option value="218">Vanuatu</option><option value="219">Vatican City State</option><option value="220">Venezuela</option><option value="221">Viet Nam</option><option value="222">Virgin Islands (Br.)</option><option value="223">Virgin Islands (US)</option><option value="224">Wallis</option><option value="225">Western Sahara</option><option value="226">Yemen</option><option value="228">Zambia</option><option value="229">Zimbabwe</option>';
            }
            
            //$.each(myOptions, function (val, text) {
            //  newOptions += '<option value="' + val + '">' + text + '</option>';
            //});
            //$("form[name=registrationForm] select[name=country]").append(newOptions);
            
            $("select[name=country]", EHARMONY.reg.$form).append(literalOptions);
            
            EHARMONY.reg.setSelectedCountryToLocale();
        },
        
        setSelectedCountryToLocale: function () {
            var selectedCountryVal;
            
            switch (EHARMONY.corp.locale.toString()) {
            case "CA":
                selectedCountryVal = 39;
                break;
            case "AU":
                selectedCountryVal = 14;
                break;
            case "UK":
                selectedCountryVal = 215;
                break;
            case "BR":
                selectedCountryVal = 31;
                break;
            default:
                selectedCountryVal = 1;
            }
            
            $('select[name=country] option[value="' + selectedCountryVal + '"]', EHARMONY.reg.$form).attr('selected', 'selected');
        },
        
        createFormSeals: function () {
            var sealsHtml = "";
            
            // Create Security Seals on Reg Form
            if (EHARMONY.corp.locale.UK) {
                sealsHtml += '<ul><li style="padding-bottom:10px"><a href="//privacy-policy.truste.com/click-with-confidence/wps/en/www.eharmony.co.uk/seal_m" title="TRUSTe online privacy certification" target="_blank"><img style="border: none" src="//privacy-policy.truste.com/certified-seal/wps/en/www.eharmony.co.uk/seal_m.png" alt="TRUSTe online privacy certification"/></a> </li>'; 
                sealsHtml += '<li><script src="https://seal.verisign.com/getseal?host_name=www.eharmony.co.uk&size=S&use_flash=NO&use_transparent=NO&lang=en"></script></li></ul>';
            
            } else if (EHARMONY.corp.locale.AU) {
                sealsHtml += '<a href="//privacy-policy.truste.com/click-with-confidence/wps/en/www.eharmony.com.au/seal_m" title="TRUSTe online privacy certification" target="_blank"><img style="border: none" src="//privacy-policy.truste.com/certified-seal/wps/en/www.eharmony.com.au/seal_m.png" alt="TRUSTe online privacy certification"/></a>'; 
                sealsHtml += '<br /><script src="https://seal.verisign.com/getseal?host_name=www.eharmony.com.au&size=S&use_flash=NO&use_transparent=NO&lang=en"></script>';
            
            } else if (EHARMONY.corp.locale.BR) {
                sealsHtml += '<a href="//privacy-policy.truste.com/click-with-confidence/wps/pt-br/www.eharmony.com.br/seal_l" title="TRUSTe online privacy certification" target="_blank"><img style="border: medium none;" src="//privacy-policy.truste.com/certified-seal/wps/pt-br/www.eharmony.com.br/seal_l.png" alt="TRUSTe online privacy certification"></a>   '; 
                sealsHtml += '<script src="https://seal.verisign.com/getseal?host_name=www.eharmony.com.br&amp;size=S&amp;use_flash=NO&amp;use_transparent=NO&amp;lang=pt"></script>';
            
            } else if (EHARMONY.corp.locale.CA) {
                sealsHtml += '<ul><li><a href="//privacy-policy.truste.com/click-with-confidence/wps/en/www.eharmony.ca/seal_s" title="TRUSTe online privacy certification" target="_blank"><img style="border: none" src="//privacy-policy.truste.com/certified-seal/wps/en/www.eharmony.ca/seal_s.png" alt="TRUSTe online privacy certification"/></a></li>';
                sealsHtml += '<li><a href="http://www.la.bbb.org/business-reviews/Dating-Services/eHarmony-Inc-in-Santa-Monica-CA-13109297" target="_blank" onClick="launchPopupFlag=false;"><img src="http://static.eharmony.com/assets/images/home/bbb.gif" height="31" width="90" border="0" vspace="0" alt="BBB" /></a></li>';
                sealsHtml += '<li><script src="https://seal.verisign.com/getseal?host_name=www.eharmony.com&size=S&use_flash=NO&use_transparent=NO&lang=en"></script></li></ul>';
            
            } else {
                sealsHtml += '<ul><li class="first"><a href="//privacy-policy.truste.com/click-with-confidence/wps/en/www.eharmony.com/seal_s" title="TRUSTe online privacy certification" target="_blank"><img style="border: none" src="//privacy-policy.truste.com/certified-seal/wps/en/www.eharmony.com/seal_s.png" alt="TRUSTe online privacy certification"/></a></li>'; 
                sealsHtml += '<li><a href="http://www.la.bbb.org/business-reviews/Dating-Services/eHarmony-Inc-in-Santa-Monica-CA-13109297" target="_blank" onclick="launchPopupFlag=false;"><img src="http://static.eharmony.com:80/static/images/home/bbb.gif" height="31" width="90" border="0" vspace="8" alt="BBB" /></a></li>'; 
                sealsHtml += '<li class="last"><iframe scrolling="no" frameborder="0" id="seals-iframe" name="seals-iframe" src="http://www.eharmony.com/assets/corp/tabs0610/verisign.html" /></li></ul>';
            }
            
            if (document.getElementById('form-seals')) {
                document.getElementById('form-seals').innerHTML = sealsHtml;
            }
        }
    };
    
    
    //
    // EHARMONY.reg.init
    //
    // Creates EHARMONY.reg.form and EHARMONY.reg.$form
    //
    EHARMONY.reg.init = function () {
        var form = arguments[0] || document.registrationForm;
        
        if (typeof form !== 'undefined') {
            EHARMONY.reg.form = form;
            EHARMONY.reg.$form = $(form);
        }
    };
    
    
    //
    //
    // EHARMONY.reg.validation
    //
    //
    EHARMONY.reg.validation = {
        
        errorMessages: (function () {
            // US, CA, UK | default values
            var errorText = {
                "alertMsg": "Some fields need correction:\n\n",
                "firstName": "Please enter your first name.",
                "gender": "Please select your gender.",
                "postalCode": "Please enter your postal code.",
                "emailAddress": [
                    "Please enter an email address.",
                    "Please enter a valid email address.",
                    "The email address contains illegal characters.",
                    "The confirm email address does not match."
                ],
                "password": [
                    "Please enter a password.",
                    "The password must be at least 5 characters."
                ],
                "findEH": "Please select how you found out about eHarmony.",
                "terms": "Please select that you have read our Terms and Conditions."
            };
            
            // BR
            if (EHARMONY.corp.locale.BR) {
                errorText = {
                    "alertMsg": "Alguns campos necessitam revisão:\n\n",
                    "firstName": "Por favor, digite o seu nome.",
                    "gender": "Selecione seu sexo.",
                    "postalCode": "Por favor digite o seu CEP.",
                    "emailAddress": [
                        "Digite um endereço de e-mail.",
                        "Por favor insira um email válido.",
                        "O endereço de email contém caracteres inválidos.",
                        "Os emails não correspondem."
                    ],
                    "password": [
                        "Por favor, digite uma senha.",
                        "A sua senha deve ter pelo menos 5 caracteres."
                    ],
                    "findEH": "Por favor, nos diga como você descobriu a eHarmony.",
                    "terms": "Confirme que você leu os nossos Termos e Condições."
                };
            }
            else if (EHARMONY.corp.locale.AU) {
              errorText.postalCode = "Please enter your postcode.";
            }
            else if (EHARMONY.corp.locale.CP) {
              errorText.findEH = "Please select how you found out about Compatible Partners.";
            }
            
            return errorText;
        }()),
        
        // Validate on form submit
        validate: function () {
            var reason = "",
                errorText = EHARMONY.reg.validation.errorMessages;
            
            reason += EHARMONY.reg.validation.checkEmpty($("form[name=registrationForm] [name=firstName]"), errorText.firstName);
            reason += EHARMONY.reg.validation.checkEmpty($("form[name=registrationForm] [name=gender]"), errorText.gender);
            reason += EHARMONY.reg.validation.checkEmpty($("form[name=registrationForm] [name=postalCode]"), errorText.postalCode);
            reason += EHARMONY.reg.validation.checkEmail(
                $("form[name=registrationForm] [name=emailAddress]"),
                $("form[name=registrationForm] input[name=confirmEmail]"),
                errorText.emailAddress
            );
            reason += EHARMONY.reg.validation.checkPassword($("form[name=registrationForm] [name=password]"), errorText.password);
            
            if ($("form[name=registrationForm] [name=findEH]").length) {
                reason += EHARMONY.reg.validation.checkEmpty($("form[name=registrationForm] [name=findEH]"), errorText.findEH);
            }
            
            if ($("form[name=registrationForm] [name=terms]").length) {
                reason += EHARMONY.reg.validation.checkTerms($("form[name=registrationForm] [name=terms]"), errorText.terms);
            } // End if
            
            if (reason !== "") {
                EHARMONY.reg.validation.regAlert(errorText.alertMsg + reason);
                return false;
            }
            
            return true;
        },
        
        // Overridable for unit tests
        regAlert: function (alertString) {
            alert(alertString);
        },
        
        checkEmpty: function (field, fieldError) {
            var errorMessage = "";
            
            if (field.val().length === 0) {
                field.css('background-color', 'Yellow');
                errorMessage = fieldError + "\n";
            } else {
                field.css('background-color', 'White');
            }
            return errorMessage;
        },
        
        checkEmail: function (field, fieldConfirm, fieldError) {
            // The "fieldError" parameter should be an array with 4 values
            
            var errorMessage = "",
                tfld = field.val().trim(),
                tfldConfirm = fieldConfirm.val().trim(),
                emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/,
                illegalChars = /[\(\)\<\>\,\;\:\\\"\[\]]/;
            
            if (field.val() === "") {
                field.css('background-color', 'Yellow'); 
                errorMessage = fieldError[0] + "\n";
            } else if (!emailFilter.test(tfld)) { //check email for illegal characters
                field.css('background-color', 'Yellow'); 
                errorMessage = fieldError[1] + "\n";
            } else if (field.val().match(illegalChars)) {
                field.css('background-color', 'Yellow'); 
                errorMessage = fieldError[2] + "\n";
            } else {
                field.css('background-color', 'White');
                fieldConfirm.css('background-color', 'White');
                if (tfld !== tfldConfirm) {
                    errorMessage = fieldError[3] + "\n";
                    field.css('background-color', 'Yellow');
                    fieldConfirm.css('background-color', 'Yellow');
                }
            }
            
            return errorMessage;
        },
        
        checkPassword: function (field, fieldError) {
            // The "fieldError" parameter should be an array with 2 values
            
            var errorMessage = "";
            
            if (field.val().length === 0) {
                field.css('background-color', 'Yellow');  
                errorMessage = fieldError[0] + "\n";
            } else if (field.val().length < 5) {
                field.css('background-color', 'Yellow'); 
                errorMessage = fieldError[1] + "\n";
            } else {
                field.css('background-color', 'White');
            }
            
            return errorMessage;
        },
        
        checkTerms: function (field, fieldError) {
            var errorMessage = "";
            
            if (!field.is(":checked")) {
                errorMessage = fieldError + "\n";
            } 
            return errorMessage;
        }
        
    };
    
    
    //
    //
    // EHARMONY.reg.gender
    //
    //
    EHARMONY.reg.gender = {
        
        options: (function () {
            var options = {
                // US, CA, UK, AU | default values
                overlayMarkup: '<h1>Would you like to go to Compatible Partners?</h1><p>Welcome to eHarmony&#8217;s gay and lesbian dating page, <b>Compatible Partners</b>, an eHarmony service for gay and lesbian singles seeking long term relationships.</p><button class="btn-cancel"><span>Close</span></button><button class="btn-confirm"><span>Take me to Compatible Partners</span></button>',
                overlaySelector: "cp_confirm",
                genderField: "gender2",
                redirectUrl: "http://www.compatiblepartners.net/eHarmony/?cid=61953&"

            };
    
            // CP
            if (EHARMONY.corp.locale.CP) {
                options.overlayMarkup = '<h1>Please Confirm</h1><p>You are about to be taken to <b>eHarmony</b>, the first online service to scientifically match highly compatible singles of the <b>opposite sex</b> for long-term relationships.</p><button type="button" class="btn-cancel"><span>Cancel</span></button><button type="button" class="btn-confirm"><span>Confirm</span></button>';
                options.overlaySelector = "eh_confirm";
                options.genderField = "genderPreference";
                options.redirectUrl = "http://www.eharmony.com/?";
                
            // BR
            } else if (EHARMONY.corp.locale.BR) {
                options.overlayMarkup = '<h1>Você gostaria de acessar o Compatible Partners?</h1><p>Bem-vindo ao eHarmony <b>Compatible Partners</b>, um site feito especialmente para gays e lésbicas, procurando relacionamentos duradouros.</p><button class="btn-cancel"><span>Fechar</span></button><button class="btn-confirm"><span>Acesse o Compatible Partners</span></button>';
            }
            
            return options;
        }()),
        
        swap: function () {
            $("select[name=" + EHARMONY.reg.gender.options.genderField + "]").val($("select[name=gender] option:selected").val());
        },
        
        
        createOverlay: function () {
            
            var options = EHARMONY.reg.gender.options;
            
            var genderOverlay = $('<div class="gender-overlay" id="'+options.overlaySelector+'"></div>').html(options.overlayMarkup).dialog({
                closeText: '',
                modal:true,
                height:211,
                width: 472  
            });
            
            //Analytics custom link tracking
            //s.tl(true, 'o', options.overlaySelector + ' Overlay - Launched'); 
                        if (typeof _gaq.push != "undefined") {
                _gaq.push(['_trackEvent', options.overlaySelector+' Reg Overlay', 'Launched']);
            }

            
            //Continue Button
            $(".gender-overlay .btn-confirm").click(function () {
                //Analytics custom link tracking
                //s.tl(true, 'o', options.overlaySelector + ' Overlay - Accepted');
                if (typeof _gaq.push != "undefined") {
                    _gaq.push(['_trackEvent', options.overlaySelector+' Reg Overlay', 'Accepted', options.overlaySelector]);
                }
                
                var gotourl = options.redirectUrl+"g="+$("form[name=registrationForm] select[name=gender]").val();
                
                window.location.href=gotourl;
            });
            
            //Cancel Button
            $(".gender-overlay .btn-cancel").click(function () {
                genderOverlay.dialog('close');
                            
                //Analytics custom link tracking
                //s.tl(true, 'o', options.overlaySelector + ' Overlay - Cancelled');
                if (typeof _gaq.push != "undefined") {
                    _gaq.push(['_trackEvent', options.overlaySelector+' Reg Overlay', 'Cancelled', options.overlaySelector]);
                }
                
            });
            
        },
        
            launchOverlay: function () {
            
            // Check if JQuery UI is already loaded, and load it if is not
            // Required for gender overlay dialog
            if (typeof jQuery.ui === "undefined") {
                $.getScript('http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js', function(){
                    EHARMONY.reg.gender.createOverlay();
                });
            } else {
                EHARMONY.reg.gender.createOverlay();
            }
            
            
        }
     
    
    };
    
    
    
// ==================================================
// 
// jQuery DOM ready
//
// ==================================================
    
    $(function() {
        // Check if reg form exists
        if (typeof document.registrationForm !== 'undefined') {
            
            var regForm = document.registrationForm,
                $regForm = $(regForm),
                zipCode = document.getElementById("zipCode");
            
            // Autofocus on the firstName field on the homepage // jQuery-less
            if (window.location.pathname === '/') {
                regForm.firstName.focus();
            }
            
            // Sets reg form equal to document.registrationForm
            EHARMONY.reg.init();
            
            // Set reg action based on locale // jQuery-less
            if( typeof(persistRegAction) == 'undefined' || persistRegAction == false ) {
                EHARMONY.reg.setAction();
            }
            
            // Validate form on submit
            regForm.onsubmit = EHARMONY.reg.validation.validate;
            
            // Set zipcode to clear onfocus // jQuery-less
            zipCode.onfocus = function () {
                zipCode.value = "";
            };
            
            // special CEP (Postal Code) lookup pop-up for BR
            $('.poptrigger').click(function () {
                window.open(this.href, '', '"height=800,width=800,status=no,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=yes"');
                return false;
            });
            
            // Build country dropdown dynamically
            EHARMONY.reg.createCountryDropdown();
            
            // Append affiliate tracking to reg form (aid, cid, etc)
            EHARMONY.reg.appendAffiliateTracking();
            
            // Onchange of country, switch the locale that the page is submitting to
            $("select[name=country]", $regForm).change(function () {
                if( typeof(persistRegAction) == 'undefined' || persistRegAction == false ) {
                    EHARMONY.reg.setRegActionToLocale();
                }
            });
            
            // Update or insert the landing page tracking hidden input field
            EHARMONY.reg.insertLandingPageTrackingValue();
            
            // Shuffle <select name="findEH"> values
            EHARMONY.reg.shuffleFindEHValues();
            
            // Monitor Gender selection validity for site user is on
            if (typeof regForm.gender !== 'undefined' && (typeof regForm.gender2 !== 'undefined' || typeof regForm.genderPreference !== 'undefined')) {
                
                // onchange of gender, update genderpreference value
                $("select[name=gender]", $regForm).change(function () {
                    EHARMONY.reg.gender.swap();
                });
                
                // On Submit
                $("input[type=image], button[type=submit]", $("form[name=registrationForm]")).click(function () {
                    //if gender selections do not validate, do not submit form and launch redirection overlay
                    if ($("select[name=gender]").val() !== $("select[name=" + EHARMONY.reg.gender.options.genderField + "]").val()) {   
                        EHARMONY.reg.gender.launchOverlay();
                        return false;                       
                    }

                });
            
            }
            
            
                    
            // Create Security Seals
            EHARMONY.reg.createFormSeals();
            
        } // End if (page has regform)
        
    }); // End (on ready)

// ==================================================
// END jQuery DOM ready
// ==================================================

} // End if ( jQuery exists )

