var userId,
    password,
    forgotUserId,
    forgotEmailAddress,
    page_header_caption;

function send() {
    if (SERKO.validateRequireds({numeric:['#forgot_userId']}).length > 0) {
        return false;
    }

    $.postJSON('solv2/ajax/so-login.asp', {
        'FunctionToRun' : 'Send',
        'UserId'        : forgotUserId.val(),
        'EmailAddress'  : forgotEmailAddress.val()
    }, function (json) {
        $('#content').removeInformation();

        if (json.Exception.length !== 0) {
            $('#page_error').showPageError(json.Exception, {json: json});
            return;
        }
        
        var response = json.ObjectResponse;
        if (response.errorMessage.length > 0) {
            $('#page_error').showPageError(response.errorMessage);
            return;
        }
        
        $('#content').showInformation('Your password hint has been sent successfully to <span class=\"strong\">' +  forgotEmailAddress.val() + '</span><br/>You will be automatically redirected back to the Login page in 5 Seconds.', {maxWidth: 450, callback: function () {
            $('#back').click();
        }});
        
    });
    
    return false;
}

function deleteOldFiles() {
    $.postJSON('solv2/ajax/databaseadministration.asp', {
            'FunctionToRun': 'DeleteOldFiles'
        });
}


function loginClick(event) {
    if (SERKO.validateRequireds({numeric:['#UserID']}).length > 0) {
        return false;
    }
    
    $('#content').showInformation('Validating Login...', { showLoading : true, hide : false, maxWidth: 180 });
    
    SERKO.Cookies.reset();

    $.postJSON('solv2/ajax/so-login.asp', {
        'FunctionToRun' : 'Login',
        'UserId'        : userId.val(),
        'Password'      : password.val(),
        'GotoPage'      : $('#gotoPage').val()
    }, function (json) {
        if (json.Exception.length !== 0) {
            $('#content').removeInformation();
            $('#page_error').showPageError(json.Exception, {json: json});
            return;
        }
        
            var response = json.ObjectResponse;
            $('#content').removeInformation();
            if (response.errorMessage.length > 0) {
                $('#page_error').showPageError(response.errorMessage);
                return;
            }
            if (response.jumpPage.length === 0) {
                $('#page_error').showPageError('Login failed');
                return;                        
            }

            SERKO.checkSiRunning();
            
        SERKO.Cookies.set(new SERKO.Cookie('soUserData', response.soUserData));
        $('#content').showInformation('Logging in...', { showLoading : true, hide : false, maxWidth: 200 });
        
        deleteOldFiles();
        
            if (!response.privacyRequired) {
                setTimeout('SERKO.jumpPage("' + json.ObjectResponse.jumpPage + '");', 200);
                return;
            }
            
            
            var jumpTo = json.ObjectResponse.jumpPage;
            
            SERKO.LightBox.showPage("so-popupinfo.asp?sScreenToDisplay=PrivacyStatement", {
                showAccept  : true,
                showDecline : true,
                afterHide   : function (buttonPressed) {
                    if (buttonPressed !== SERKO.LightBox.buttonType.Accept) {
                        SERKO.Cookies.reset();
                        $('#content').removeInformation();
                        userId.val('').focus();
                        password.val('');
                        
                        return true;
                    }
                    
                    $.postJSON('solv2/ajax/so-login.asp', {
                            'FunctionToRun' : 'AcceptTerms'
                        },
                        function (json) { // success
                            setTimeout('SERKO.jumpPage("' + jumpTo + '");', 200);
                        },
                        undefined,
                        function () { // failed
                            $('#page_error').showPageError('Failed to Accpet Terms');
                            $('#content').removeInformation();
                        });
                    
                    return false;
                }
            });
    });
    
    return false;
}

$(document).ready(function () {

    // check if not in LightBox window
    if (window.parent && window.parent.location !== window.location) {
        window.parent.location = window.location;
        return;
    }
    
    SERKO.Cookies.reset();
    self.focus();
    
    $('#login_box_agency_logo').empty().append(
        $(document.createElement('img'))
            .attr({id: 'travel_agency', src: 'SOLV2/images/AgencyLogos/blank.gif', alt: ''})
            .load(function () {
                $(this).fitToParent().verticallyAlign();
            })
            .error(function () {
                $(this).remove();
            }));
    
    userId = $('#UserID');
    password = $('#passwd1');
    forgotUserId = $('#forgot_userId');
    forgotEmailAddress = $('#forgot_emailAddress');
    page_header_caption = $('#page_header_caption');
    
    // wakeup SERKO.Net
    $.get('Ping.aspx', {}, function (data, textStatus) {}, "text");    
    
    if (!SERKO.PageState.developerMachine) {
        userId.attr('autocomplete', 'off');
        password.attr('autocomplete', 'off');
        forgotUserId.attr('autocomplete', 'off');
        forgotEmailAddress.attr('autocomplete', 'off');
    }

    userId.focus();
    
    if (pageOptions.agencyContact.email.length > 0 || pageOptions.agencyContact.phone.length > 0) {
        var information = $(document.createElement('div'))
            .attr({id: 'contact_support'})
            .addClass('data_entry');

        if (pageOptions.agencyContact.phone.length > 0) {
            information.append($(document.createElement('div'))
                .addClass('row')
                .append($(document.createElement('div')).addClass('cell label').html('Phone'))
                .append($(document.createElement('div')).addClass('cell field').html(pageOptions.agencyContact.phone))
                .append(SERKO.clearFloat));
        }

        if (pageOptions.agencyContact.email.length > 0) {
            information.append($(document.createElement('div'))
                .addClass('row')
                .append($(document.createElement('div')).addClass('cell label').html('Email'))
                .append($(document.createElement('div')).addClass('cell field').append('<a href="mailto:' + pageOptions.agencyContact.email + '?subject=What is my SERKOŽ Online User ID%3F&body=Hi%0A%0APlease can you send me my SERKOŽ Online User ID.%0A%0AThanks" title="Click to send email to support">' + pageOptions.agencyContact.email + '</a>'))
                .append(SERKO.clearFloat));        
        }
        
        $(document.createElement('span'))
            .addClass('link small')
            .html('What is my User ID?')
            .click(function () {
                SERKO.LightBox.showMessageBox('Contact Support', information, {width: 350, showClose: true});
            })
            .appendTo(forgotUserId.parent());
        $('#forgotpassword').html('Forgot your User ID or Password?');
    }
    
    /* events */
    
    $('#login_button').click(loginClick);
    $('#forgot_button').click(send);
    
    $('#forgotpassword').click(function () {
        $('#login_box_content, #login_button').hide();
        $('#forgotpassword_box_content, #forgot_button').show();
        forgotUserId.focus();
        page_header_caption.html('Forgot Password');
    });
    $('#back').click(function () {
        $('#forgotpassword_box_content, #forgot_button').hide();
        $('#login_box_content, #login_button').show();
        userId.focus();
        page_header_caption.html('Login To Your Account');
    });

    $('#selfRegistration').click(function () {
        SERKO.jumpPage('so-self-registration.aspx');
    });
    
    if (!pageOptions.selfRegistration) {
        $('#selfRegistration').hide();
    }

    $(document).keydown(function (event) {
        if (event.keyCode !== SERKO.key.ENTER) {
            return;
        }

        event.stopPropagation();
        event.preventDefault();
        if ($('#login_box_content').is(':visible')) {
        return loginClick();
        }
        return send();
    });

    /* end of events */
});
