document.observe('dom:loaded', function(){

    //Message highlight and fade functions
    if($('messages'))
    {
        new Effect.Appear('messages', {
            duration: 0.25
        });
        new Effect.Fade('messages', {
            queue: 'end',
            delay: 5,
            duration: 2
        });
    }


    //table hover functions
    $$('#search-results tr.result').each(function(item) {
        item.observe('mouseover', function() {
            item.addClassName("hover");
        });
        item.observe('mouseout', function() {
            item.removeClassName("hover");
        });
    });
    //Admin table hover functions
    $$('#main-list tbody tr').each(function(item) {
        item.observe('mouseover', function() {
            item.addClassName("hover");
        });
        item.observe('mouseout', function() {
            item.removeClassName("hover");
        });
    });
    floatCart();
});

document.observe('dom:changed', function(){
    //table hover functions
    $$('#search-results tr.result').each(function(item) {
        item.observe('mouseover', function() {
            item.addClassName("hover");
        });
        item.observe('mouseout', function() {
            item.removeClassName("hover");
        });
    });
});

function removeHoverClass(cssClass)
{
    $$('#search-results tr.result').each(function(item) {
        item.removeClassName(cssClass);
    })
}

function disableButton(theButton,theForm)
{
    theButton.disabled = "disabled";
    $(theForm).submit();
}

function highlightCell(cell)
{
    //firstly make sure the hover class is removed from all the other cells.
    $$('.diaryLink').each(function(cell){
        cell.removeClassName("hover");
    });
    //Now add it to the one that's just been clicked.
    cell.addClassName("hover");
}

function bringToFront(message)
{
    self.focus();
}

function showDelay(message)
{
    setTimeout("bringToFront('" + message + "')", 10000);
}

function removeJob(job,entry,jobSearch)
{
    if($(job))
    {
        $(job).remove();
    }
    Lightview.hide();
    new Ajax.Updater("cart-items", "remove_from_cart/?entry=" + entry + "&jobsearch=" + jobSearch, {
        asynchronous:true,
        evalScripts:true
    })
}

function addToCart(cart,job,jobSearch)
{
    $("cart" + job).show();
    $("cart" + job).writeAttribute("title","Added to cart");
    Lightview.hide();
    new Ajax.Updater("cart-items", "add_to_cart/?cart=" + cart + "&job=" + job + "&jobsearch=" + jobSearch, {
        asynchronous:true,
        evalScripts:true
    })
}

function floatCart()
{
    var cart = $('cart');
    window.moveToTop = function()
    {
        if(cart)
        {
            var showResults = $('results-holder');
            var currentListOffset = '';
            if(showResults)
            {
                currentListOffset = $('results-holder').viewportOffset()[1];
            }
            else
            {
                currentListOffset = $('search-results').viewportOffset()[1];

            }
            var currentCartOffset = cart.viewportOffset()[1];
            var amount = 0;
            if (currentListOffset < 0)
            {
                amount = (currentCartOffset * -1) + 20;
            }
            else
            {
                amount = currentListOffset - currentCartOffset;
            }
            if(amount != 0)
            {
                new Effect.Move('cart', {
                    x: 0,
                    y: amount,
                    mode: 'relative',
                    duration: 0.1
                });
            }
        }
        setTimeout("moveToTop()", 150);
    }
    moveToTop();
}

function batchApply()
{
    Lightview.show({
        href: '/profile/batch_apply',
        rel: 'ajax',
        options: {
            autosize: true,
            topclose: true,
            ajax: {
                method: 'get',
                evalScripts: true
            }
        }
    });
}

function submitForm(theForm)
{
    $(theForm).submit();
}

function addActiveStyle(theTab)
{
    var tab= $(theTab);
    tab.removeClassName('inactive');
    tab.addClassName('active');
}

function removeActiveStyle()
{
    var theTabs = $$('#subMenu a');
    theTabs.each(function(tab){
        tab.addClassName('inactive');
        tab.removeClassName('active');
    });
}

function actionComplete(application){
    Lightview.show({
        href: 'action_complete/' + application,
        rel: 'ajax',
        options: {
            autosize: true,
            topclose: true,
            ajax: {
                method: 'get',
                evalScripts: true
            }
        }
    });
}

function switchEffect(elt,effect)
{
    var theElt = $(elt);
    switch(effect)
    {
        case "slide":
            if(theElt.style.display=="none")
            {
                new Effect.SlideDown($(theElt),{
                    duration:0.2
                });
            }
            else
            {
                new Effect.SlideUp($(theElt),{
                    duration:0.2
                });
            }
            break;
        case "fade":
            if(theElt.style.display=="none")
            {
                new Effect.Appear($(theElt),{
                    duration:0.2
                });

            }
            else
            {
                new Effect.Fade($(theElt),{
                    duration:0.2
                });
            }
            break;
    }
}

function handleBlobs(effect)
{
    var theBlobs = $$('.timeBlob');
    switch(effect)
    {
        case "hide":
            theBlobs.each(function(blob){
                new Effect.Fade($(blob),{
                    duration:0.2
                });
            });
            break;
        case "show":
            theBlobs.each(function(blob){
                new Effect.Appear($(blob),{
                    duration:0.2
                });
            });
            break;
    }
}

function clearField(field)
{
    $(field).value = '';
}

function handleArrows(arrow,image)
{
    $$('.sortArrow').each(function(item) {
        item.src = image;
        item.hide();
    });
    $(arrow).show();
}

function removeClass(elt,klass,text)
{
    var elnt = $(elt);
    if(elnt.value == text)
    {
        elnt.value = "";
    }

    if(elnt.innerHTML == text)
    {
        elnt.innerHtml = "";
    }
    elnt.removeClassName(klass);
}

function addAcceptedTerms(div,jobBoard,accepted)
{
    img = '<img src="/images/monkey/notAcceptedIcon.png" alt="Terms not accepted" title="Terms not accepted" />';
    if(accepted)
    {
        img = '<img src="/images/monkey/acceptedIcon.png" alt="Terms accepted" title="Terms accepted" />';
    }
    elt = $(div);
    elt.innerHTML = img;
}

function checkMasterForm()
{
    result = false;
    if (($('user_apply_title').value != '') &&
        ($('user_apply_first_name').value != '') &&
        ($('user_apply_last_name').value != '') &&
        ($('user_apply_username').value != '') &&
        ($('user_apply_password').value != '') &&
        ($('user_apply_address_1').value != '') &&
        ($('user_apply_city').value != '') &&
        ($('user_apply_postcode').value != '') &&
        ($('user_telephone').value != '') &&
        ($('user_current_job_title').value != '') &&
        ($('user_previous_employer').value != '') &&
        ($('user_min_salary').value != '') &&
        ($('user_min_rate').value != ''))
        {
        result = true;
    }
    return result;
}

function checkScreeningQuestions()
{

    radios =  $$('.screening');
    radioCount = radios.length;
    if(radioCount == 0)
    {
        result = true;
    }
    else
    {
        result = false;
        checkedCount = 0;
        $$('.screening').each(function(item) {
            if(item.checked)
            {
                checkedCount += 1;
            }
        });
        if(checkedCount == radioCount / 2)
        {
            result = true;
        }
    }
    return result;
}

function validateForm(css)
{
    result = true;
    fields = $$(css);
    fields.each(function(item) {
        item.removeClassName('fieldError');
        if(item.value == '')
        {
            item.addClassName('fieldError');
            result = false;
        }
    });
    return result;
}

function processValidation(elt,css)
{
    form = $(elt);
    if(validateForm(css))
    {
        form.submit();
    }
    else
    {
        alert('Please complete every highlighted field in this form.')
    }
}

function switchList(chk,css)
{
    checkBox = $(chk);
    checkBoxes = $$(css);
    checkBoxes.each(function(item) {
        item.checked = checkBox.checked;

    });
}

function addAffiliateQuestions(theElement)
{
    theElement.insert('<span style="font-size:0.7em">Field name:</span><input type="text" name="field_name[]" /><span style="font-size:0.7em">Question:</span><input type="text" name="field_question[]" /><br />');
}