/*  pages_jobseeker_visitor_home.js - v0.6.1h */


var lform =
{
    form_id: null,
    disabled: false,


    ajax_submit: function(form_id, parameters)
    {
		if (lform.disabled) return false;

		lform.disabled = true;

        lform.form_id = form_id;

        var options = {};

        // call the global lform on_submit handler
        if (! lform.on_submit()) return false;

        // check for a form_id specific on_submit handler
        var form_id_on_submit = eval('lform.' + form_id + '_on_submit');

        if (form_id_on_submit)
        {
            if (! form_id_on_submit()) return false;
        }

        options.parameters = parameters ? parameters : {};

        options.parameters.form_id = form_id;
		options.evalJS = 'force';
        options.onSuccess = lform.ajax_succeeded;
        options.onFailure = lform.ajax_failed;

        $(form_id).request(options);

        return false;
    },


    // override this for on submit functionality
    on_submit: function() { return true; },


	ajax_succeeded: function(transport, json)
    {
		lform.disabled = false;

        // we should always get back a json status, but...
        if (! json) return;

        lform.form_id = json.form_id;

        if (! json.validation_succeeded)
        {
            return lform.validation_failed(transport, json);
        }

        if (! json.submit_succeeded)
        {
            return lform.submit_failed(transport, json);
        }

        lform.submit_succeeded(transport, json);
    },


    ajax_failed: function(transport, json)
    {
		lform.disabled = false;

        alert('Error! Request failed!');
    },


    submit_succeeded: function(transport, json)
    {
        var form_id_form_submit_succeeded = eval('lform.' + json.form_id + '_submit_succeeded');

        if (form_id_form_submit_succeeded)
        {
            form_id_form_submit_succeeded(transport, json);
        }
        else if (transport.responseText)
        {
            $('view').update(transport.responseText);
        }
    },


    submit_failed: function(transport, json)
    {
        var form_id_form_submit_failed = eval('lform.' + json.form_id + '_submit_failed');

        if (form_id_form_submit_failed)
        {
            form_id_form_submit_failed(transport, json);
        }
        else if (json.form_error_message)
        {
            lform.display_form_error_message(json.form_error_message);
        }
        else
        {
            lform.display_form_error_message('Error! Submit failed!');
        }
    },


    validation_failed: function(transport, json)
    {
		lform.disabled = false;

        var form_id_form_validation_failed = eval('lform.' + json.form_id + '_validation_failed');

        if (form_id_form_validation_failed)
        {
            form_id_form_validation_failed(transport, json);
        }

		lform.display_errors(transport, json);
    },


    display_errors: function(transport, json)
    {
        if (json.form_error_message)
        {
            lform.display_form_error_message(json.form_error_message);
        }
        else
        {
            lform.clear_form_error_message();
        }

		json.fields.each(lform.display_field_error_message);
    },


    display_form_error_message: function(form_error_message)
    {
        var form_id_display_func = eval('lform.' + this.form_id + '_display_form_error_message');

		if (form_id_display_func)
		{
			form_id_display_func(form_error_message);
			return;
		}

        var form_error_message_box = this.form_id + '_form_error_message_box';

        if ($(form_error_message_box))
        {
            $(form_error_message_box).removeClassName('hidden_error_message');
            $(form_error_message_box).update(form_error_message);

			lform.highlight_error(form_error_message_box);
        }
        else
        {
            lpopup.info(form_error_message);
        }
    },


	highlight_error: function(message_box)
    {
		if (typeof(lhighlight) == 'undefined') return;

		lhighlight.class_name = 'lform_highlight_error';
		lhighlight.start($(message_box));
	},


    clear_form_error_message: function(form_error_message)
    {
        var form_error_message_box = this.form_id + '_form_error_message_box';

        if ($(form_error_message_box))
        {
            $(form_error_message_box).addClassName('hidden_error_message');
        }
    },


    display_field_error_message: function(form_field)
    {
        var error_message_box = form_field.id + '_error_message';
        var error_message = form_field.error_message;

        if (error_message && $(error_message_box))
        {
            $(error_message_box).removeClassName('hidden_error_message');
            $(error_message_box).innerHTML = error_message;

			lform.highlight_error(error_message_box);
        }

        if (! error_message && $(error_message_box))
        {
            $(error_message_box).addClassName('hidden_error_message');
        }
    },


	check_for_enter_ajax_submit: function(form_id, key_code)
	{
		if (key_code == Event.KEY_RETURN)
		{
			lform.ajax_submit(form_id);
			return false;
		}

		return true;
	}
};




lform.locations_new_form_on_submit = location_on_submit;
lform.locations_new_form_validation_failed = location_validation_failed;


function submit_location_form()
{
    $('searching_spinner_box').show();

	lform.ajax_submit('locations_new_form');
}


function location_on_submit()
{
    $('searching_spinner_box').show();

	return true;
}


function location_validation_failed()
{
	$('searching_spinner_box').hide();

	enable_green_button();
}



function green_button_onclick(onclick_func)
{
    if ($('green_button').disabled)
    {
		return;
    }

    disable_green_button();
    onclick_func();
}


function disable_green_button()
{
    $('green_button').disabled = true;
}


function enable_green_button()
{
    $('green_button').disabled = false;
}


function green_button_down()
{
    $('green_button').addClassName('green_button_down');
}


function green_button_up()
{
    $('green_button').removeClassName('green_button_down');
}

function green_button_out()
{
    $('green_button').addClassName('green_button_up');
    $('green_button').removeClassName('green_button_down');
}


