/* Set the action of the DOM container */
function setSubAction(action)
{
    var obj = document.getElementById('applyToJobSubAction');
    if (obj)
    {
        obj.value = action;
    }
}

/* Check if there's a resume to upload */
function resumeLoadCheck()
{
    var fileInput = document.getElementById('resumeFile');
    var parseButton = document.getElementById('resumePopulate');
    var resumeUpload = document.getElementById('resumeLoad');

    resumeUpload.disabled = (fileInput.value).length ? false : true;
    if (parseButton)
    {
        parseButton.disabled = (fileInput.value).length ? false : true;
    }
}

/* Load the contents of the uploaded file into the textarea box */
function resumeLoadFile()
{
    setSubAction('resumeLoad');
    document.applyToJobForm.submit();
}

function resumeParse()
{
    var fileInput = document.getElementById('resumeFile');
    var resumeContents = document.getElementById('resumeContents');
    if ((resumeContents.value).length || (fileInput.value).length)
    {
        setSubAction('resumeParse');
        document.applyToJobForm.submit();
    }
}

function resumeContentsChange(e)
{
    var parseButton = document.getElementById('resumePopulate');
    var fileInput = document.getElementById('resumeFile');
    if (parseButton)
    {
        parseButton.disabled = !(e.value).length && !(fileInput.value).length ? true : false;
    }
}

/* Preload default career portal images (should move to template) */
var returnToMainOff = new Image(130, 25);
returnToMainOff.src = '../images/careers_return.gif';
var returnToMainOn = new Image(130, 25);
returnToMainOn.src = '../images/careers_return-o.gif';

var rssFeedOff = new Image(130, 25);
rssFeedOff.src = '../images/careers_rss.gif';
var rssFeedOn = new Image(130, 25);
rssFeedOn.src = '../images/careers_rss-o.gif';

var showAllJobsOff = new Image(130, 25);
showAllJobsOff.src = '../images/careers_show.gif';
var showAllJobsOn = new Image(130, 25);
showAllJobsOn.src = '../images/careers_show-o.gif';

var applyToPositionOff = new Image(130, 25);
applyToPositionOff.src = '../images/careers_apply.gif';
var applyToPositionOn = new Image(130, 25);
applyToPositionOn.src = '../images/careers_apply-o.gif';

var submitApplicationNowOff = new Image(130, 25);
submitApplicationNowOff.src = '../images/careers_submit.gif';
var submitApplicationNowOn = new Image(130, 25);
submitApplicationNowOn.src = '../images/careers_submit-o.gif';

function buttonMouseOver(ename, tf)
{
    var e = document.getElementById(ename);

    if (!e) return;

    var tag;
    if (tf)
    {
        tag = 'On';
    }
    else
    {
        tag = 'Off';
    }

    eval('e.src = ' + ename + tag + '.src');
}

function onFocusFormField(e)
{
    var isNewNo = document.getElementById('isNewNo');

    if (e.id != 'email')
    {
        if (!isNewNo.checked)
        {
            isNewNo.checked = true;
        }
    }
}

function focusFirstField()
{
    var inputs = document.getElementsByTagName('input');
    var emailTabIndex = -1;
    var nextObjDist = -1;
    var nextObj = 0;
    var dist;

    // Get the tabIndex for the required e-mail field
    for (var i = 0; i < inputs.length; i++)
    {
        if (inputs[i].id == 'email')
        {
            emailTabIndex = inputs[i].tabIndex;
        }
    }

    // If there is no e-mail field, we can't do anything
    if (emailTabIndex == -1) return;

    // Get the next closest
    for (var i = 0; i < inputs.length; i++)
    {
        if (inputs[i].id != 'email' && inputs[i].type == 'text')
        {
            dist = Math.abs(emailTabIndex - inputs[i].tabIndex);
            if (nextObjDist == -1 || dist  < nextObjDist)
            {
                nextObjDist = dist;
                nextObj = inputs[i];
            }
        }
    }

    if (nextObj)
    {
        nextObj.focus();
        nextObj.select();
    }
}

function enableFormFields(tf)
{
    var inputs = document.getElementsByTagName('input');
    var rememberMe = document.getElementById('rememberMe');

    if (rememberMe)
    {
        rememberMe.disabled = !tf;
    }

    for (var i = 0; i < inputs.length; i++)
    {
        if (inputs[i].id != 'email' && inputs[i].type == 'text')
        {
            inputs[i].disabled = !tf;
        }
    }
}

function isCandidateRegisteredChange()
{
    var isNewYes = document.getElementById('isNewYes');
    var isNewNo = document.getElementById('isNewNo');

    if (isNewYes.checked)
    {
        enableFormFields(false);
    }
    else
    {
        enableFormFields(true);
        focusFirstField();
    }
}

function validateCandidateRegistration()
{
    var obj, obj2;
    var isNewObj = document.getElementById('isNewYes');
    var isNew = isNewObj ? isNewObj.checked : false;

    var formFields = [
        'firstName', 'lastName', 'zipCode', 'address', 'city', 'state', 'homePhone',
        'mobilePhone', 'workPhone'
    ];

    if ((obj = document.getElementById('password1')) && (obj2 = document.getElementById('password2')))
    {
        if ((obj.value).length < 3 || (obj.value).length > 12 || obj.value != obj2.value)
        {
            alert('Your password should be between 3 and 12 characters in length and both passwords should match exactly.');
            return false;
        }
    }

    // E-mail address is the only required field regardless of registered/unregistered
    if (obj = document.getElementById('email'))
    {
        if (!(obj.value).match(/^[A-Za-z0-9\.\-\_]+\@[A-Za-z0-9\.\-\_]+\.[A-Za-z0-9]{2,6}$/))
        {
            obj.style.backgroundColor = '#FDF0F0';
            alert('Please enter a valid e-mail address.');
            return false;
        }
    }

    if (!isNew)
    {
        var error = false;
        for (var fieldIndex = 0; fieldIndex < formFields.length; fieldIndex++)
        {
            if (obj = document.getElementById(formFields[fieldIndex]))
            {
                if (!(obj.value).length)
                {
                    obj.style.backgroundColor = '#FDF0F0';
                    error = true;
                }
            }
        }
        if (error)
        {
            alert("Because you have registered before, please complete all the fields to login.\n\nIf you haven\'t registered before, please select \"I have not registered on this website\".");
            return false;
        }
    }

    return true;
}

function trimString(txt)
{
    var i;
    for (i = 0; i < txt.length; i++)
    {
        if (txt[i] == ' ')
        {
            txt = txt.substr(1);
        }
        else
        {
            break;
        }
    }

    for (i = txt.length - 1; i > 0; i--)
    {
        if (txt[i] == ' ')
        {
            txt = txt.substr(0, txt.length - 1);
        }
        else
        {
            break;
        }
    }

    return txt;
}

function validateSendToFriend()
{
    // Check for validation fields and then ensure they're completed
    var obj;
    var msg = '';
    var validEmail = /^[A-Za-z0-9\.\-\_]+\@[A-Za-z0-9\.\-\_]+\.[A-Za-z0-9]{2,6}$/;

    if ((obj = document.getElementById('referrerName')) && !(trimString(obj.value).length))
    {
        msg += (msg == '' ? 'Please enter ' : ', ') + 'your name';
    }
    if ((obj = document.getElementById('referrerEmail')) && (!(trimString(obj.value).length) ||
        !trimString(obj.value).match(validEmail)))
    {
        msg += (msg == '' ? 'Please enter a ' : ', a ') + 'valid e-mail for yourself';
    }
    if ((obj = document.getElementById('referralName')) && !(trimString(obj.value).length))
    {
        msg += (msg == '' ? 'Please enter ' : ', ') + 'your friend\'s name';
    }
    if ((obj = document.getElementById('referralEmail')) && (!(trimString(obj.value).length) ||
        !trimString(obj.value).match(validEmail)))
    {
        msg += (msg == '' ? 'Please enter a ' : ', a ') + 'valid e-mail for your friend';
    }

    if (msg != '')
    {
        alert(msg + '.');
        return false;
    }
    else
    {
        return true;
    }
}

function forgotPassword()
{
    var emailObj = document.getElementById('email');

    if (!document.getElementById('password') || !emailObj)
    {
        /* Site is not using the password feature */
        return false;
    }

    if (!(emailObj.value).match(/[A-Za-z0-9\.\-]+\@[A-Za-z0-9\.\-]+/))
    {
        alert('Enter a valid e-mail address in the field above. Your password will be sent to '
            + 'that address.'
        );
        return false;
    }

    var http = AJAX_getXMLHttpObject();

    /* Build HTTP POST data. */
    var POSTData = '&email=' + urlEncode(emailObj.value) + '&siteID=' + urlEncode(currentSiteID);

    /* Anonymous callback function triggered when HTTP response is received. */
    var callBack = function ()
    {
        if (http.readyState != 4)
        {
            return;
        }

        if (!http.responseXML)
        {
            var errorMessage = "An error occurred while receiving a response from the server.\n\n"
                             + http.responseText;
            alert(errorMessage);
            //alert('Unable to retrieve your password at this time. Please register as a new candidate.');
            return;
        }

        var success = http.responseXML.getElementsByTagName('success').item(0).firstChild.nodeValue;

        if (success != 0)
        {
            var name = http.responseXML.getElementsByTagName('name').item(0).firstChild.nodeValue;

            alert('Hello ' + name + ', your password has been e-mailed to you at ' + (emailObj.value) + '. '
                + 'If you don\'t receive your password shortly and your e-mail has a spam filter enabled, '
                + 'please check your rejected folder as this may be the problem.'
            );

            return;
        }
        else
        {
            alert('You do not appear to have registered with us before or you haven\'t setup a password. '
                + 'Registration is free. Browse and apply to a job to register now.'
            );

            return;
        }
    }

    AJAX_callCATSFunction(
        http,
        'careerSiteForgotPassword',
        POSTData,
        callBack,
        0,
        '',
        false,
        false
    );
}
