// -------------------------------------------------------
// Register and Profile Update
//
// $Id: register.js,v 1.2 2009/01/24 11:53:45 steve Exp $
//
// -------------------------------------------------------

function init_register() {

    $('input#SubmitRegistration').click( submitRegistration )
    
    if (document.getElementById('RegisterEmail')) {
        var elem = document.getElementById('RegisterEmail')
        EventManager.add(elem, EventManager.CHANGE, checkEmail)
    }
    if (document.getElementById('RegisterFirstName')) {
        var elem = document.getElementById('RegisterFirstName')
        EventManager.add(elem, EventManager.CHANGE, checkName)
    }
    if (document.getElementById('RegisterNewPassword')) {
        var elem = document.getElementById('RegisterNewPassword')
        EventManager.add(elem, EventManager.CHANGE, checkPassword)
    }
    if (document.getElementById('RegisterPasswordConfirm')) {
        var elem = document.getElementById('RegisterPasswordConfirm')
        EventManager.add(elem, EventManager.CHANGE, checkPasswordConfirm)
    }
    if (document.getElementById('RegisterPasswordConfirm')) {
        var elem = document.getElementById('RegisterPasswordConfirm')
        EventManager.add(elem, EventManager.CHANGE, checkPasswordConfirm)
    }
    if (document.getElementById('RegisterTown')) {
        var elem = document.getElementById('RegisterTown')
        EventManager.add(elem, EventManager.CHANGE, checkTown)
    }
    if (document.getElementById('RegisterCountySelect')) {
        var elem = document.getElementById('RegisterCountySelect')
        EventManager.add(elem, EventManager.CHANGE, checkCounty)
    }
    if (document.getElementById('RegisterPostcode')) {
        var elem = document.getElementById('RegisterPostcode')
        EventManager.add(elem, EventManager.CHANGE, checkPostcode)
    }
    if (document.getElementById('RegisterPhone')) {
        var elem = document.getElementById('RegisterPhone')
        EventManager.add(elem, EventManager.CHANGE, checkPhone)
    }
    if (document.getElementById('AccountTypeSelect')) {
        var elem = document.getElementById('AccountTypeSelect')
        EventManager.add(elem, EventManager.CHANGE, checkAccountType)
        setAccountTypeDescription()
    }
    // Page 2
    //
    if (document.getElementById('RegisteredAccountSelected')) {
        var elem = document.getElementById('RegisteredAccountSelected')
        EventManager.add(elem, EventManager.CHANGE, changeRegisteredAccount)
    }
    if (document.getElementById('OtherWaysToPayLink')) {
        var elem = document.getElementById('OtherWaysToPayLink')
        EventManager.add(elem, EventManager.CLICK, showOtherWaysToPay)
    }
    if (document.getElementById('NoConfirmationLink')) {
        var elem = document.getElementById('NoConfirmationLink')
        elem.href = 'mailto:info@hogsmill.com?SubjectRegistration%20Enquiry'
    }

    // Update Profile
    //
    $('input#UpdateProfile').click( updateProfile )
    $('input#UpdatePreferences').click( updatePreferences )

    //if (document.getElementById('UpdateProfile')) {
    //    var elem = document.getElementById('UpdateProfile')
    //    EventManager.add(elem, EventManager.CLICK, updateProfile)
    //}
    //if (document.getElementById('UpdatePreferences')) {
    //    var elem = document.getElementById('UpdatePreferences')
    //    EventManager.add(elem, EventManager.CLICK, updatePreferences)
    //}
}

// Field Validation
//
function checkEmail(id) {

    var elem = document.getElementById('RegisterEmail') ;

    PARAMS = 'Action=checkRegisterEmail&Email=' + elem.value
    jQuery.post(SITEURL, PARAMS, _emailChecked)
}

function _emailChecked(data) {

    data = jsonData(data)
    var span = document.getElementById('checkMailSpan') ;
    var img  = document.getElementById('invalidEmailHelp') ;
    var msg
    if (data.Error) {
        if (data.Empty) {
            msg = 'Cannot be blank'
        } else if (data.Invalid) {
            msg = 'Email is invalid'
            img.className = 'visible'
            addTip(img)
        } else if (data.Existing) {
            msg = 'Email exists'
        }
        span.innerHTML = "<img src='images/error_warning.gif'> " + msg
    } else {
        span.innerHTML = ''
        img.className = 'invisible'
    }
    document.getElementById('EmailChecked').value = 1
    fieldsChecked()
}

function checkPassword() {

    var elem = document.getElementById('RegisterNewPassword') ;
    var pass = elem.value ;

    var span = document.getElementById('checkPasswordSpan') ;
    if (pass.length < 6) {
        span.innerHTML =
                "<img src='images/error_warning.gif'> " +
                "Must be 6 or more characters"
    } else {
        span.innerHTML = '' ;
    }
    document.getElementById('PasswordChecked').value = 1
    fieldsChecked()
}

function checkPasswordConfirm() {

    var elem1 = document.getElementById('RegisterNewPassword') ;
    var elem2 = document.getElementById('RegisterPasswordConfirm') ;
    var pass1 = elem1.value ;
    var pass2 = elem2.value ;

    if (!pass1 || !pass2) {
        document.getElementById('PasswordConfirmChecked').value = 1
        return ;
    }

    var span = document.getElementById('checkPasswordConfirmSpan')
    if (pass1 != pass2) {
        span.innerHTML =
                "<img src='images/error_warning.gif'> " +
                "Passwords do not match"
    } else {
        span.innerHTML = '' ;
    }
    document.getElementById('PasswordConfirmChecked').value = 1
    fieldsChecked()
}

function checkName() {

    var elem = document.getElementById('RegisterFirstName') ;
    var name = elem.value ;

    var span = document.getElementById('checkNameSpan') ;
    if (!name) {
        span.innerHTML =
                "<img src='images/error_warning.gif'> " +
                "Please enter your name"
    } else {
        span.innerHTML = '' ;
    }
    document.getElementById('NameChecked').value = 1
    fieldsChecked()
}

function checkTown() {

    var elem = document.getElementById('RegisterTown') ;
    var town = elem.value ;

    var span = document.getElementById('checkTownSpan') ;
    if (!town) {
        span.innerHTML =
                "<img src='images/error_warning.gif'> " +
                "Please enter a town"
    } else {
        span.innerHTML = '' ;
    }
    document.getElementById('TownChecked').value = 1
    fieldsChecked()
}

function checkPostcode() {

    document.getElementById('PostcodeChecked').value = 0

    var pcode = document.getElementById('RegisterPostcode').value
    var span  = document.getElementById('checkPostcodeSpan') ;
    var img   = document.getElementById('invalidPostcodeHelp') ;
    if (!checkPostCode(pcode)) {
        span.innerHTML =
                "<img src='images/error_warning.gif'> " +
                "Invalid postcode"
        img.className = 'visible'
        addTip(img)
    } else {
        span.innerHTML = ''
        img.className = 'invisible'
    }

    document.getElementById('PostcodeChecked').value = 1
    fieldsChecked()
}

function checkPhone() {

    var elem = document.getElementById('RegisterPhone') ;
    var num  = elem.value ;

    var span = document.getElementById('checkPhoneSpan') ;
    if (!num) {
        span.innerHTML = "<img src='images/error_warning.gif'> " +
                         "Please enter a phone no."
    } else {
        span.innerHTML = '' ;
    }
    document.getElementById('PhoneChecked').value = 1
    fieldsChecked()
}

function checkAccountType() {

    document.getElementById('AccountTypeChecked').value = 0

    var ind  = document.getElementById('AccountTypeSelect').selectedIndex
    var span = document.getElementById('checkAccountTypeSpan') ;
    if (!ind) {
        span.innerHTML =
                "<img src='images/error_warning.gif'> " +
                "Please Select a Type"
        document.getElementById('AccountTypeDescription').innerHTML = ''
    } else {
        span.innerHTML = '' ;
        PARAMS = 'Action=getAccountTypeDescription&AccountType=' + ind
        jQuery.post(SITEURL, PARAMS, _setAccountTypeDescription)
    }

    document.getElementById('AccountTypeChecked').value = 1
    fieldsChecked()
}

function setAccountTypeDescription(data) {

    var ind  = document.getElementById('AccountTypeSelect').selectedIndex
    PARAMS = 'Action=getAccountTypeDescription&AccountType=' + ind
    jQuery.post(SITEURL, PARAMS, _setAccountTypeDescription)
}

function _setAccountTypeDescription(data) {

    data         = jsonData(data)
    descriptions = data.Descriptions
    var elem     = document.getElementById('AccountTypeDescription')
    elem.innerHTML = ''
    for (i = 0; i < descriptions.length; i++) {
        var str =  ' ' + descriptions[i].Type + ': ' + descriptions[i].Description
        var div  = Element.Create('div', '', '', '', elem)
        var img  = Element.Create('span', '', 'AccountTypeDescriptionImg', '', div)
        var desc = Element.Create('span', '', '', str, div)
        if (descriptions[i].Selected) {
            div.className = 'AccountTypeDescriptionSel'
            var pic  = Element.Create('img', '', '', '', img)
            pic.src = 'images/bullet.gif'
        } else {
            div.className = 'AccountTypeDescriptionUnsel'
        }
    }
}

function checkCounty() {

    // No longer mandatory
    //
    document.getElementById('CountyChecked').value = 1
    return

    var ind  = document.getElementById('RegisterCountySelect').selectedIndex
    var span = document.getElementById('checkCountySpan') ;
    if (!ind) {
        span.innerHTML =
                "<img src='images/error_warning.gif'> " +
                "Please Select a County"
    } else {
        span.innerHTML = '' ;
    }

    document.getElementById('CountyChecked').value = 1
    fieldsChecked()

}

function fieldsChecked() {

    if (document.getElementById('SubmitPressed').value == 0) {
        return
    }

    if (document.getElementById('EmailChecked').value == 1 &&
        document.getElementById('PasswordChecked').value == 1 &&
        document.getElementById('PasswordConfirmChecked').value == 1 &&
        document.getElementById('NameChecked').value == 1 &&
        document.getElementById('TownChecked').value == 1 &&
        document.getElementById('CountyChecked').value == 1 &&
        document.getElementById('PostcodeChecked').value == 1 &&
        document.getElementById('PhoneChecked').value == 1 &&
        document.getElementById('AccountTypeChecked').value == 1) {
        submitTheRegistration()
    }
}

function submitRegistration() {

    // Check Ts and Cs
    //
    if (!document.getElementById('RegisterTandC').checked) {
        alert('You must agree to our Terms and Conditions to Register')
        return
    }
    document.getElementById('SubmitPressed').value = 1
    document.getElementById('EmailChecked').value = 0
    document.getElementById('PasswordChecked').value = 0
    document.getElementById('PasswordConfirmChecked').value = 0
    document.getElementById('NameChecked').value = 0
    document.getElementById('TownChecked').value = 0
    document.getElementById('CountyChecked').value = 0
    document.getElementById('PostcodeChecked').value = 0
    document.getElementById('PhoneChecked').value = 0
    document.getElementById('AccountTypeChecked').value = 0

    checkEmail()
    checkPassword()
    checkPasswordConfirm()
    checkName()
    checkTown()
    checkCounty()
    checkPostcode()
    checkPhone()
    checkAccountType()
}

function submitTheRegistration() {

    // Field Validation
    //
    var submit = 1
    if (document.getElementById('checkMailSpan').innerHTML != '' ||
        document.getElementById('checkPasswordSpan').innerHTML != '' ||
        document.getElementById('checkPasswordConfirmSpan').innerHTML != '' ||
        document.getElementById('checkNameSpan').innerHTML != '' ||
        document.getElementById('checkTownSpan').innerHTML != '' ||
        document.getElementById('checkCountySpan').innerHTML != '' ||
        document.getElementById('checkPostcodeSpan').innerHTML != '' ||
        document.getElementById('checkAccountTypeSpan').innerHTML != '') {
        submit = 0 ;
    }

    if (!submit) {
        document.getElementById('SubmitPressed').value = 0
        alert('Please fix the errors before registering')
        return
    }
    if (document.getElementById('RegistrationInProgress').value == 0) {
        document.getElementById('RegistrationInProgress').value = 1 ;
        document.getElementById('SubmitRegistration').disabled = 1 ;
    } else {
        return ;
    }
    
    var ind

    var email    = document.getElementById('RegisterEmail').value
    var pass     = document.getElementById('RegisterNewPassword').value
    ind          = document.getElementById('RegisterTitleSelect').selectedIndex
    var title    = document.getElementById('RegisterTitleSelect').options[ind].text
    var first    = document.getElementById('RegisterFirstName').value
    var second   = document.getElementById('RegisterSecondName').value
    var houseno  = document.getElementById('RegisterHouseNumber').value
    var address1 = document.getElementById('RegisterAddress1').value
    var address2 = document.getElementById('RegisterAddress2').value
    var address3 = document.getElementById('RegisterAddress3').value
    var town     = document.getElementById('RegisterTown').value
    ind          = document.getElementById('RegisterCountySelect').selectedIndex
    var county = ''
    if (ind) {
        county   = document.getElementById('RegisterCountySelect').options[ind].text
    }
    var pcode    = document.getElementById('RegisterPostcode').value
    var phone    = document.getElementById('RegisterPhone').value
    var mobile   = document.getElementById('RegisterMobile').value
    var day   = 0
    var month = 0
    var year  = 0
    if (document.getElementById('RegisterDOBDaySelect')) {
        day      = document.getElementById('RegisterDOBDaySelect').selectedIndex
        month    = document.getElementById('RegisterDOBMonthSelect').selectedIndex
        ind          = document.getElementById('RegisterDOBYearSelect').selectedIndex
        var year
        if (ind == 0) {
            year = 0 ;
        } else {
            year = document.getElementById('RegisterDOBYearSelect').options[ind].text
        }
    }
    ind          = document.getElementById('AccountTypeSelect').selectedIndex
    var acType   = document.getElementById('AccountTypeSelect').options[ind].value

    if (!acType) {
        alert('Please Select an Account Type')
        return ;
    }
    PARAMS = 'Action=register&Email=' + email +
                            '&Password=' + pass +
                            '&Title=' + title +
                            '&FirstName=' + first +
                            '&SecondName=' + second +
                            '&HouseNo=' + houseno +
                            '&Address1=' + address1 +
                            '&Address2=' + address2 +
                            '&Address3=' + address3 +
                            '&Town=' + town +
                            '&County=' + county +
                            '&Postcode=' + pcode +
                            '&Phone=' + phone +
                            '&Mobile=' + mobile +
                            '&Email=' + email +
                            '&DOBDay=' + day +
                            '&DOBMonth=' + month +
                            '&DOBYear=' + year +
                            '&AccountTypeId=' + acType
    jQuery.post(SITEURL, PARAMS, _submitRegistration)
}

function _submitRegistration(data) {

    data = jsonData(data)
    currentMail(data.Email)
    updatePreferences('register')
}

function _submitRegistrationDone(data) {

   data  = jsonData(data)
   var url = location.href
   urls    = url.split('?')
   url = urls[0] + '?Page=2&Email=' + data.Email
   if (urls[1]) {
       url = url + '&' + urls[2]
   }
   location.replace(url)
}

function showOtherWaysToPay() {

    var hid = document.getElementById('OtherWaysToPayHidden').value
    var div = document.getElementById('OtherWaysToPay')

    div.innerHTML = hid
}

function unshowOtherWaysToPay() {

    var div = document.getElementById('OtherWaysToPay')

    div.innerHTML = ''
}

function updateProfile(referred) {

    var pass = ''
    if (document.getElementById('RegisterNewPassword').value != '') {
        pass = document.getElementById('RegisterNewPassword').value
        var conf = document.getElementById('RegisterPasswordConfirm').value
        if (pass != conf) {
            alert('New password and confirmation do not match')
            document.getElementById('RegisterNewPassword').value        = ''
            document.getElementById('RegisterPasswordConfirm').value = ''
            return
        }
    }
    var ind
    ind          = document.getElementById('RegisterTitleSelect').selectedIndex
    var title    = document.getElementById('RegisterTitleSelect').options[ind].text
    var first    = document.getElementById('RegisterFirstName').value
    var second   = document.getElementById('RegisterSecondName').value
    var houseno  = document.getElementById('RegisterHouseNumber').value
    var address1 = document.getElementById('RegisterAddress1').value
    var address2 = document.getElementById('RegisterAddress2').value
    var address3 = document.getElementById('RegisterAddress3').value
    var town     = document.getElementById('RegisterTown').value
    ind          = document.getElementById('RegisterCountySelect').selectedIndex
    var county = ''
    if (ind) {
        county   = document.getElementById('RegisterCountySelect').options[ind].text
    }
    var pcode    = document.getElementById('RegisterPostcode').value
    var phone    = document.getElementById('RegisterPhone').value
    var mobile   = document.getElementById('RegisterMobile').value
    var email    = document.getElementById('RegisterEmail').innerHTML
    var day   = 0
    var month = 0
    var year  = 0
    if (document.getElementById('RegisterDOBDaySelect')) {
        day      = document.getElementById('RegisterDOBDaySelect').selectedIndex
        month    = document.getElementById('RegisterDOBMonthSelect').selectedIndex
        ind          = document.getElementById('RegisterDOBYearSelect').selectedIndex
        var year
        if (ind == 0) {
            year = 0 ;
        } else {
            year = document.getElementById('RegisterDOBYearSelect').options[ind].text
        }
    }
    ind          = document.getElementById('AccountTypeSelect').selectedIndex
    var actype   = document.getElementById('AccountTypeSelect').options[ind].value

    var origactype = document.getElementById('OriginalAccountType').value

    if (actype > origactype) {
        if (!confirm("You are about to upgrade your account.\n" +
                "You will need to pay the extra membership fees " +
                "to get all features. Continue?")) {
            return
        }
    }
    if (actype < origactype) {
        if (!confirm("You are about to downgrade your account.\n" +
                "You may lose access to some features. Continue?")) {
            return
        }
    }
    currentMail(email)
    PARAMS = 'Action=updateProfile&Password=' + pass +
                                 '&Title=' + title +
                                 '&FirstName=' + first +
                                 '&SecondName=' + second +
                                 '&HouseNo=' + houseno +
                                 '&Address1=' + address1 +
                                 '&Address2=' + address2 +
                                 '&Address3=' + address3 +
                                 '&Town=' + town +
                                 '&County=' + county +
                                 '&Postcode=' + pcode +
                                 '&Phone=' + phone +
                                 '&Mobile=' + mobile +
                                 '&Email=' + email +
                                 '&DOBDay=' + day +
                                 '&DOBMonth=' + month +
                                 '&DOBYear=' + year +
                                 '&AccountTypeId=' + actype
    if (referred) {
        jQuery.post(SITEURL, PARAMS, _updateProfileAndPreferencesDone)
    } else {
        jQuery.post(SITEURL, PARAMS, _updateProfileDone)
    }
}

function updatePreferences(referred) {

    var email       = document.getElementById('RegisterEmail').innerHTML
    var showEmail   = document.getElementById('ShowEmail').checked
    var showAddress = document.getElementById('ShowAddress').checked
    var showPhone   = document.getElementById('ShowPhone').checked
    var showMobile  = document.getElementById('ShowMobile').checked
    var ind         = document.getElementById('DefaultPageSelect').selectedIndex
    var defaultPage = document.getElementById('DefaultPageSelect').options[ind].value

    if (showEmail) {
        showEmail = 0
    } else {
        showEmail = 1
    }
    if (showAddress) {
        showAddress = 0
    } else {
        showAddress = 1
    }
    if (showPhone) {
        showPhone = 0
    } else {
        showPhone = 1
    }
    if (showMobile) {
        showMobile = 0
    } else {
        showMobile = 1
    }
    PARAMS = 'Action=updatePreferences&Email=' + currentMail() +
                                     '&ShowEmail=' + showEmail +
                                     '&ShowAddress=' + showAddress +
                                     '&ShowPhone=' + showPhone +
                                     '&ShowMobile=' + showMobile +
                                     '&LoginPageId=' + defaultPage
    if (referred == 'register') {
       jQuery.post(SITEURL, PARAMS, _submitRegistrationDone)
    } else if (referred) {
       jQuery.post(SITEURL, PARAMS, _updateProfileAndPreferencesDone)
    } else {
       jQuery.post(SITEURL, PARAMS, _updatePreferencesDone)
    }
}

function _updateProfileDone(data) {

    updatePreferences(1)
}

function _updatePreferencesDone(data) {

    updateProfile(1)
}

function _updateProfileAndPreferencesDone() {

    replacePage('profileUpdated.php')
}


