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


var ltext_area = 
{
	character_count_length_update: function(id)
	{
		// we don't want to count newlines as two characters on the following OSes:
		// DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS
		tmp_value = $(id).value.replace(/\r\n/g, '\n').trim();

		character_count_l = tmp_value.length;

		$(id + '_character_count').innerHTML = character_count_l;

		if (character_count_l > $(id).getAttribute('maxlength'))
		{
			$(id + '_character_count').className = 'character_count over_the_limit';
		}
		else
		{
			$(id + '_character_count').className = 'character_count under_the_limit';
		}  
	}
};


String.prototype.trim = function()
{
	return this.replace(/^\s+|\s+$/g, '');
}


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;
	}
};





var limage_checkbox = 
{
	checked_image: new Image(),
	unchecked_image: new Image(),

	
	init: function(checked_image_src, unchecked_image_src)
	{
		limage_checkbox.checked_image.src = checked_image_src;
		limage_checkbox.unchecked_image.src = unchecked_image_src;
	},


	toggle_checkbox: function(hidden_input_id)
	{
		if ($(hidden_input_id).disabled)
		{
			limage_checkbox.select_checkbox(hidden_input_id);
		}
		else
		{
			limage_checkbox.unselect_checkbox(hidden_input_id);
		}

		limage_checkbox.on_toggle(hidden_input_id);
	},


	on_toggle: function(hidden_input_id) {},


	select_checkbox: function(hidden_input_id)
	{
		var image_id = hidden_input_id + '_image';

		$(hidden_input_id).enable();
		$(image_id).src = limage_checkbox.checked_image.src;

		limage_checkbox.on_select(hidden_input_id);
	},


	on_select: function(hidden_input_id) {},


	unselect_checkbox: function(hidden_input_id)
	{
		var image_id = hidden_input_id + '_image';

		$(hidden_input_id).disable();
		$(image_id).src = limage_checkbox.unchecked_image.src;

		limage_checkbox.on_unselect(hidden_input_id);
	},


	on_unselect: function(hidden_input_id) {}
};




function green_button_clicked()
{
	lform.ajax_submit('account_requests_new_form');
}


lform.account_requests_new_form_validation_failed = function (transport, json)
{
    enable_green_button();
}


function terms_of_use_click(url)
{
	child_window = window.open(url, '', 'width=1000,height=500,top=80,left=20,toolbar=no,scrollbars=yes,menubar=no,location=no,status=yes,resizable=yes');

	if (child_window.opener == null)
	{
		child_window.opener = self;
	}
}


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');
}


