var readableFormNames = new Object();

readableFormNames["Contact_firstName"] = "your first name";
readableFormNames["Contact_FirstName"] = "your first name";
readableFormNames["Contact_lastName"] = "your last name";
readableFormNames["Contact_LastName"] = "your last name";
readableFormNames["Contact_Company"] = "the name of your company";
readableFormNames["Contact_WorkPhone"] = "your work telephone number";
readableFormNames["Contact_Address"] = "your work street address";
readableFormNames["Contact_City"] = "the city in which your office is located";
readableFormNames["Contact_State"] = "the state in which your office is located";
readableFormNames["Contact_ZipCode"] = "the zip code at your office";
readableFormNames["Country"] = "the country in which you work";
readableFormNames["Contact_Title"] = "your job title";
readableFormNames["Contact_Email"] = "your job work email address";


function validateLogin(frm)
{
    
	frm.username.value = frm.username.value.replace(/^\s+|\s+$/g,'');
	frm.password_1.value = frm.password_1.value.replace(/^\s+|\s+$/g,'');
	frm.password_2.value = frm.password_2.value.replace(/^\s+|\s+$/g,'');
	
	if (frm.username.value.length < 4 || frm.username.value.length > 12)
	{
		alert("Username must be 4-12 characters long!")
		frm.username.focus()
		return false;
	}
	
	// make sure passwords match
	if (frm.password_1.value != frm.password_2.value)
	{
		alert("Passwords must match, please re-enter!")
		frm.password_1.value = frm.password_2.value = ""
		frm.password_1.focus()
		return false;
	}
	
	// make sure passwords are long enough
	if (frm.password_1.value.length < 4 || frm.password_1.value.length > 12)
	{
		alert("Passwords must be 4-12 characters long, please re-enter!")
		frm.password_1.value = frm.password_2.value = ""
		frm.password_1.focus()
		return false;
	}
	return true;
}

function Validate(ctrl, minSize, content)
{
	if (typeof ctrl == "undefined") return false;
	var temp;
	
	temp = ctrl.name;
	ctrl.value = ctrl.value.replace(/^\s+|\s+$/g,'');
	
	if (ctrl.value.length < minSize)
	{
		if (temp.substring(0, 2) == "NN")
			temp = temp.substring(1, temp.length);
		alert("Please enter " + readableFormNames[ctrl.name] + "!");
		ctrl.focus();
		return false;
	}

	if (content > 0)
	{
		if (content == 1)  //1 stands for numeric
		{
			if (isNum(ctrl.value) == 0)
			{
				alert(Replace(temp, "_", " ") + " should have a numeric value...");
				ctrl.select();
				ctrl.focus();
				return false;
			}
		}
	}
		
	if (ctrl.name == "Contact_WorkPhone" && ctrl.value.length < 7 )
	{
		ctrl.select();
		ctrl.focus();
		alert("Please enter at least a 7 digit telephone number.")
		return false;
	}

	return true;
}

// this does basic validation, and can be passed additional functions to be called
function ValidateAll()
{
	
	var frm = document.userform;
	if (true) // for debugging purposes
	{
		if (frm.acceptagreement.value == "no")
		{
			alert("Your request cannot be submitted unless you accept terms and conditions.");
			return false;
		}

		if (Validate(frm.Contact_FirstName, 1, 0) == false)
			return false;
	
		if (Validate(frm.Contact_LastName, 1, 0) == false)
			return false;	
	
		if (Validate(frm.Contact_Company, 1, 0) == false)
			return false;

		if (Validate(frm.Contact_Title, 1, 0) == false)
			return false;

		if (Validate(frm.Contact_WorkPhone, 1, 0) == false)
			return false;
			
			
	

		if (Validate(frm.Contact_Email, 1, 0) == false)
			return false;
			
		if (!isValidEmail(frm.Contact_Email.value))
		{
			alert("Please enter a valid email address!")
			return false;
		}
			
		if (!validateLogin(frm)) return false;
		
		var ret = true;
		for (var i=0; i < arguments.length; i++)
		{
			eval ("ret = " + arguments[i])
			if (!ret) return false;
		}
	}
	frm.submit();
}

function isValidEmail(e) 
{
	re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
	re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
	if (!e.match(re) && e.match(re_two)) 
	{
	    if ( mytrim(e).indexOf(' ') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('’') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('`') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('~') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('#') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('$') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('%') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('^') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('&') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('*') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('(') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf(')') != -1 )    {  return (false);   }
	    if ( mytrim(e).indexOf('+') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf('=') != -1 )    {  return (false);   }	    	    	    
	    if ( mytrim(e).indexOf('|') != -1 )    {  return (false);   }	    
	    if ( mytrim(e).indexOf('\\') != -1 )   {  return (false);   }	    	    
        if ( mytrim(e).indexOf('[') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf(']') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf('{') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf('}') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf(':') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf(';') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf('\'') != -1 )   {  return (false);   }
        if ( mytrim(e).indexOf('\"') != -1 )   {  return (false);   }                                                        
        if ( mytrim(e).indexOf(',') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf('<') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf('>') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf('/') != -1 )    {  return (false);   }
        if ( mytrim(e).indexOf('?') != -1 )    {  return (false);   }
        
        var temp = mytrim(e);
        var l    = e.length;
        var c;
        var tld = ''; 
        for ( c = l ; c > 0 ; c-- )
        { 
           var curchar = temp.substr(c,1);
           if ( curchar  == '.' )
           {
             break;
           }
           else
           {
             tld = curchar + tld;
           }
        }
        if ( ! isNaN(tld) )
        {
           return false;
        }
        else
        {
          return true;
        }
	} 

	return false;
}


function mytrim(s)
{
  var c,newstr,wordfound;
  
  newstr    = "";
  wordfound = false;
  for ( c = 0 ; c < s.length; c++ )
  {
     if ( s.substr(c,1) != " " || wordfound )
     {
       newstr +=  s.substr(c,1)
       wordfound = true;       
     }
  }

  s = newstr;
  newstr = "";
  wordfound = false;
  for ( c = s.length-1  ; c >= 0 ; c-- )
  {
     if ( s.substr(c,1) != " " || wordfound )
     {
       newstr = s.substr(c,1) + newstr;
       wordfound = true;       
     }
  }  
  
  return newstr;
}

function SelectYes()
{
	document.userform.acceptagreement.value = "yes";
}

function SelectNo()
{
	document.userform.acceptagreement.value = "no";
}

function Replace(myString, target, replaceby)
{
var temp = "";

	for (var i = 0; i < myString.length; i++)
	{
		if (target == myString.charAt(i)) 
			temp = temp + replaceby;
		else
			temp = temp + myString.charAt(i);
	}
	
	return temp;
}

function isNum(myString)
{
var count = 0;
	for (var i = 0; i < myString.length; i++)
	{
	    for (var j=0; j<10; j++) 
	    {
			if ("" + j == myString.charAt(i)) 
				count ++;
		}
	}
	
	if (count < myString.length)
		return false;
	else
		return true;
}

