// $Id: validate.js,v 1.3 2000/08/02 11:55:24 polito Exp polito $

function CR_to_BR(s_element)
{
    var s_output;
    var s_input;
    
    s_output = "";
    s_input  = s_element.value;

    for (var i = 0; i < s_input.length; i++)
    {
        if ((s_input.charCodeAt(i) == 13) && (s_input.charCodeAt(i+1) == 10))
        {
            i++;
            s_output += "<BR>";
        }
        else
        {
            s_output += s_input.charAt(i);
        }
    }

    return s_output;
}

function fix_element(element, message)
{
	alert(message);
	element.focus();
}

function format_currency(i_currency)
{
    var i_cents;
            
    i_currency = i_currency.toString().replace(/\$|\,/g,'');

    if (isNaN(i_currency)) i_currency = "0";

    i_cents     = Math.floor((i_currency * 100 + 0.5) % 100);
    i_currency  = Math.floor(i_currency).toString();

    if (i_cents < 10) cents = "0" + i_cents;

    for (var i = 0; i < Math.floor((i_currency.length - (1 + i)) / 3); i++)
        i_currency = i_currency.substring(0, i_currency.length - (4 * i + 3)) + ',' + i_currency.substring(i_currency.length - (4 * i + 3));

    return ('$' + i_currency + '.' + cents);
}

function explain_form(s_fieldname, o_output, s_help_msg)
{
    w_new = window.open('','','top=150,left=150,width=325,height=300');
    if (!w_new.opener) w_new.opener = self;
    with (w_new.document)
    {
        open();
        write('<html>');
        write('<body onLoad="document.form.box.focus()"><form name="form">' + s_help_msg + '<br>');
        write('<p>You may enter your ' + s_fieldname + ' here and it will be copied into the form for you.');
        write('<p><center>' + s_fieldname + ': <input type="text" name="box" size="20" onKeyUp="' + o_output + ' = this.value">');
        write('<p><input type="button" value="Click to close when finished." onClick="window.close();">');
        write('</center></form></body></html>');
        close();
    }
}

function check_email(o_email)
{

	var s_trimmed_email = new String(trim_string(o_email.value));
	
	var rx_email = /^(.+)@(.+)$/;
	var rx_special_chars = "\\(\\)<>@,$/;:\\\\\\\"\\.\\[\\]";
	var rx_valid_chars = "\[^\\s" + rx_special_chars + "\]";
	var rx_quoted_user = "(\"[^\"]*\")";
	var rx_ip_domain = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var rx_atom = rx_valid_chars + '+';
	var rx_word = "(" + rx_atom + "|" + rx_quoted_user + ")";
	var rx_user = new RegExp("^" + rx_word + "(\\." + rx_word + ")*$");
	var rx_domain = new RegExp("^" + rx_atom + "(\\." + rx_atom +")*$");

	var a_match = s_trimmed_email.match(rx_email);

	if (a_match == null)
	{
		fix_element(o_email, "E-mail address seems to be incorrect (check @ and .'s)");
		return false;
	}

	var s_user = a_match[1];
	var s_domain = a_match[2];

	if (s_user.match(rx_user) == null)
	{
		fix_element(o_email, "Your e-mail username doesn't seem to be valid.");
		return false;
	}

	var a_IP = s_domain.match(rx_ip_domain);
	if (a_IP != null)
	{
		for (var i =1; i <= 4; i++)
		{
			if (a_IP[i] > 255)
			{
				fix_element(o_email, "Your e-mail Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}

	var a_domain = s_domain.match(rx_domain)
	if (a_domain == null)
	{
		fix_element(o_email, "The domain name in your e-mail address doesn't seem to be valid.");
		return false;
	}

	var rx_atoms = new RegExp(rx_atom,"g");
	var a_dom = s_domain.match(rx_atoms);
	var i_len = a_dom.length;
	if (a_dom[a_dom.length - 1].length < 2 || a_dom[a_dom.length - 1].length > 3)
	{
		fix_element(o_email, "The e-mail address must end in a three-letter domain, or two letter country.");
		return false;
	}

	if ( i_len < 2)
	{
		fix_element(o_email, "This e-mail address is missing a hostname!");
		return false;
	}

	o_email.value = s_trimmed_email;
	return true;

}


function trim_string(str)
{
	var s_input = new String(str);
	var i_start, i_end;
	var s_trimmed;
	var c_char;

	i_end = s_input.length - 1;
	i_start = 0;
	
	c_char = s_input.charAt(i_start);
	while ((i_start < i_end) && ((c_char == "\n") || (c_char == "\r") || (c_char == "\t") || (c_char == " ")))
	{
		i_start++;
		c_char = s_input.charAt(i_start);
	}

	c_char = s_input.charAt(i_end);
	while ((i_end >= 0) && ((c_char == "\n") || (c_char == "\r") || (c_char == "\t") || (c_char == " ")))
	{
		i_end--;
		c_char = s_input.charAt(i_end);
	}

	if (i_start < i_end) 
	{
		s_trimmed = s_input.substring(i_start, i_end + 1);
	} 

	else 

	{
		s_trimmed = "";
	}

	return s_trimmed;
}

function check_name(o_name)
{
	if (o_name.value == "") { fix_element(o_name, "Your name is required!"); return false; }
	o_name.value = trim_string(o_name.value);
}

function html_tag_rm(word)
{
	var a;
	var b;
	var c;
	var d;
	var len;
	var tag_check;

	a = word.indexOf("<");
	b = word.indexOf(">");
	c = word.substring(0, a);

	len = word.length;

	if (b == -1)
		b = a;
	
	d = word.substring((b + 1), len);
	word = c + d;

	tag_check = word.indexOf("<");
	if (tag_check != -1)
		word = html_tag_rm(word);
	
	return word;
}

function remove_html(s_element)
{
	var content;
	var checked_content;
	
	content = s_element.value;
	checked_content = html_tag_rm(content);
	
	return checked_content;
}
