function on_country_changed(position)
{
    var ctry = $(pays_tag + "_" + position);
    var txt_to_display = (ctry.selectedIndex > 0)? '+' + ctry.value.split('*')[1] : '';
    $(pays_tag + "_" + position + "_txt").value = txt_to_display;
}


// Undocumented functions, thanks :-(
function display_error(label, err_label, error_no, position)
{
    $(label + '_err').addClassName('red');
    $(err_label + '_err' + error_no).show();
    $(position).focus();
}


function display_error_skype(label, error_no, position)
{
    $(label + '_err' + error_no).show();
    $(position).focus();
}


function display_skype()
{
}

function reset_error()
{
    $('firstname_err').removeClassName('red');
    $('lastname_err').removeClassName('red');

    $('first_name_err1').hide();
    $('first_name_err2').hide();
    $('first_name_err3').hide();

    $('last_name_err1').hide();
    $('last_name_err2').hide();
    $('last_name_err3').hide();

    var nb_phone = $F('nb_phone');
    var i = 0;

    for (i = 1; i <= nb_phone; i++)
    {
        $('phone' + i + '_err').removeClassName('red');
        $('phone' + i + '_err1').hide();
        $('phone' + i + '_err2').hide();
        $('phone' + i + '_err3').hide();
        $('phone' + i + '_err4').hide();
    }

    $('email_err').removeClassName('red');
    $('email_err1').hide();
    $('email_err2').hide();
    $('email_err3').hide();
    $('email_err4').hide();

    $('confirm_email_err').removeClassName('red');
    $('confirm_email_err1').hide();
    $('confirm_email_err4').hide();

    $('pin_err').removeClassName('red');
    $('pin_err1').hide();
    $('pin_err2').hide();
    $('pin_err3').hide();

    $('check_err').removeClassName('red');
    $('check_err1').hide();
    
    $('error_message').hide();
}

function reset_phone_type()
{
    var i = 0;
    var phone_type = [];

    for (i = ($(type_tag + '_1').options.length - 1); i >= 0; i--)
    {
        phone_type[i] = 0;
    }

    return phone_type;
}


function save_register()
{
    if (validate_register())
    {
        $('signupForm').submit();
    }
}

function validate_register()
{
    reset_error();

    var to_return = true;

    if ($(check_tag).checked === false)
    {
        display_error('check', 'check', '1', check_tag);
        to_return = false;
    }


    if (!validate_data("req", $(pin_tag), "display_error('pin', 'pin', '1', pin_tag)") ||
        !validate_data("num", $(pin_tag), "display_error('pin', 'pin', '3', pin_tag)") ||
        !validate_data("minlen=6", $(pin_tag), "display_error('pin', 'pin', '3', pin_tag)") ||
        !validate_data("maxlen=12", $(pin_tag), "display_error('pin', 'pin', '3', email_tag)"))
    {
        to_return = false;
    }

    if (!validate_data("req", $(vemail_tag), "display_error('confirm_email', 'confirm_email', '1', vemail_tag)"))
    {
        to_return = false;
    }

    if (!validate_data("req", $(email_tag), "display_error('email', 'email', '1', email_tag)") ||
        !validate_data("email", $(email_tag), "display_error('email', 'email', '2', email_tag)"))
    {
        to_return = false;
    }
    else
    {
        if (validate_data("req", $(vemail_tag), "") && ($F(email_tag) !== $F(vemail_tag)))
        {
            display_error('confirm_email', 'confirm_email', '4', vemail_tag);
            display_error('email', 'email', '4', email_tag);
            to_return = false;
        }
    }

    var nb_phone = $F('nb_phone');
    var i = 0;
    var phone_type = reset_phone_type();
    var old = false;
    var done = false;

    do
    {
        i++;
        if (validate_data("req", $(clid_tag + '_' + i), ""))
        {
            if (old)
            {
                $(type_tag + '_' + (i - 1)).selectedIndex = $(type_tag + '_' + i).selectedIndex;
                $(pays_tag + '_' + (i - 1)).selectedIndex = $(pays_tag + '_' + i).selectedIndex;
                $(clid_tag + '_' + (i - 1)).value = $F(clid_tag + '_' + i);
                $(pays_tag + '_' + i).selectedIndex = 0;
                $(clid_tag + '_' + i).value = '';
                on_country_changed(i - 1);
                on_country_changed(i);
                done = true;
            }
            else
            {
                old = false;
            }
        }
        else
        {
            old = true;
        }

        if (i == nb_phone && done)
        {
            i = 0;
            done = false;
            old = false;
        }
    } while (i < nb_phone)

    i = 0;
    do
    {
        i++;
        if (phone_type[$(type_tag + '_' + i).selectedIndex] >= 1)
        {
          if (!validate_data("req", $(clid_tag + '_' + i), ""))
          {
              if ($(type_tag + '_' + i).selectedIndex < ($(type_tag + '_' + i).options.length - 1))
              {
                  $(type_tag + '_' + i).selectedIndex = $(type_tag + '_' + i).selectedIndex + 1;
              }
              else
              {
                  $(type_tag + '_' + i).selectedIndex = 0;
              }
              i = 0;
              phone_type = reset_phone_type();
          }
          else
          {
              phone_type[$(type_tag + '_' + i).selectedIndex] += 1;
          }
        }
        else
        {
          phone_type[$(type_tag + '_' + i).selectedIndex] += 1;
        }
    } while (i < nb_phone)

    phone_type = reset_phone_type();

    if (!validate_data("country", $(pays_tag + '_1'), "display_error('phone1', 'phone1', '1', pays_tag + '_1')") ||
        !validate_data("req", $(clid_tag + '_1'), "display_error('phone1', 'phone1', '3', clid_tag + '_1')") ||
        !validate_data("phone", $(clid_tag + '_1'), "display_error('phone1', 'phone1', '2', clid_tag + '_1')"))
    {
        to_return = false;
    }
    else
    {
        phone_type[$(type_tag + '_1').selectedIndex] += 1;
    }

    for (i = 2; i <= nb_phone; i++)
    {
        if (validate_data("req", $(clid_tag + '_' + i), ""))
        {
            phone_type[$(type_tag + '_' + i).selectedIndex] += 1;
            if (!validate_data("country", $(pays_tag + '_' + i), "display_error('phone" + i + "', 'phone" + i + "', '1', pays_tag + '_" + i + "')") ||
                !validate_data("phone", $(clid_tag + '_' + i), "display_error('phone" + i + "', 'phone" + i + "', '2', clid_tag + '_" + i + "')"))
            {
                to_return = false;
            }
        }
    }

    phone_type.each(function (s) {
        if (s > 1)
        {
            display_error('phone1', 'phone1', '4', type_tag + '_1');
            to_return = false;
        }
    });


    if (!validate_data("req", $(lname_tag), "display_error('lastname', 'last_name', '2', lname_tag)") ||
        !validate_data("maxlen=50", $(lname_tag), "display_error('lastname', 'last_name', '1', lname_tag)"))
    {
        to_return = false;
    }

    if (!validate_data("req", $(fname_tag), "display_error('firstname', 'first_name', '2', fname_tag)") ||
        !validate_data("maxlen=50", $(fname_tag), "display_error('firstname', 'first_name', '1', fname_tag)"))
    {
        to_return = false;
    }

    return to_return;
}