// FALCON 1.0 - IMG javascript library
// Module: string functions
// Author: David Grimm, IMG, david.grimm@imgworld.com
// Last change: 2007-08-02

// Functions:
// ==========
// falcon_string_checkPasswordStrength(password)
// falcon_string_calculatePasswordStrength(password)
// falcon_string_checkPasswordEquality(pass_re,pass)
// falcon_string_getAscii(character)
// falcon_string_checkChaosTxt(input,toinput)
// falcon_string_checkEmail(s)

// falcon_string_checkPasswordStrength: check strength of a inserted password
function falcon_string_checkPasswordStrength(password,maxlength,resultfield,resulttext)
{
	var color_default	= '5px solid #dddddd';
	var color_high 		= '5px solid #30971F';
	var color_medium 	= '5px solid #ffcc33';
	var color_low	 	= '5px solid #FF0000';
	var color_short 	= '5px solid #666666';
	
	if(password.length < maxlength)
	{
		if(password.length == 0)
		{
			document.getElementById(resultfield).style.borderBottom = color_default;
			document.getElementById(resulttext).innerHTML = '';
		}
		else
		{
			document.getElementById(resultfield).style.borderBottom = color_short;
			document.getElementById(resulttext).innerHTML = '<span style="color:#666666;font-weight:bold;">zu kurz</span>';
		}
	}
	else
	{
		var result = falcon_string_calculatePasswordStrength(password);
		
		if(result == "high")
		{
			document.getElementById(resultfield).style.borderBottom = color_high;
			document.getElementById(resulttext).innerHTML = '<span style="color:#30971F;font-weight:bold;">stark</span>';
		}
		else if(result == "medium")
		{
			document.getElementById(resultfield).style.borderBottom = color_medium;
			document.getElementById(resulttext).innerHTML = '<span style="color:#ffcc33;font-weight:bold;">ausreichend</span>';
		}
		else if(result == "low")
		{
			document.getElementById(resultfield).style.borderBottom = color_low;
			document.getElementById(resulttext).innerHTML = '<span style="color:#FF0000;font-weight:bold;">schwach</span>';
		}
	}
}

// falcon_string_calculatePasswordStrength: calculate strength of a given password
function falcon_string_calculatePasswordStrength(password)
{
	var result			= "";
	
	var is_upper		= 0;
	var is_lower		= 0;
	var is_num			= 0;
	
	var lower_ascii_max	= 123;
	var lower_ascii_min	= 96;
	
	var num_ascii_max	= 58;
	var num_ascii_min	= 47;
	
	var a 				= 1;
	
	// Count lower and upper characters and nums
	for(i = 0;i<password.length;i++)
	{
		var char_tmp = password.substring(i,a);
		
		// Num
		if(falcon_string_getAscii(char_tmp) < num_ascii_max)
		{
			if(falcon_string_getAscii(char_tmp) > num_ascii_min)
			{
				is_num += 1;
			}
		}
		else
		{
			// Lower character
			if(falcon_string_getAscii(char_tmp) > lower_ascii_min)
			{
				if(falcon_string_getAscii(char_tmp) < lower_ascii_max)
				{
					is_lower += 1;
				}
			}
			else // Upper character
			{
				is_upper += 1;
			}
		}
			
		a += 1;
	}
	
	// Calculate security level
	if(is_num == 0)
	{
		if(is_upper == 0)
		{
			return "low";
		}
		else
		{
			return "medium";
		}
	}
	else
	{
		return "high";
	}
}

// falcon_string_getAscii: get ascii code of a character
function falcon_string_getAscii(character)
{
	return character.charCodeAt(0);
}

// falcon_string_checkPasswordEquality(pass_re,pass): check equality of 2 passwords
function falcon_string_checkPasswordEquality(pass_re,pass)
{
	var passw = document.getElementById(pass).value;
	
	var color_ok 		= '#30971F';
	var color_error 	= '#FF0000';
	
	if(pass_re == passw)
	{
		document.getElementById('passre_result').innerHTML = '<span style="font-weight:bold;color:' + color_ok + ';">Passwörter sind gleich!</span>';
	}
	else
	{
		document.getElementById('passre_result').innerHTML = '<span style="font-weight:bold;color:' + color_error + ';">Passwörter sind verschieden!</span>';
	}
}

// falcon_string_checkChaosTxt(input,toinput): check a input of a form field
function falcon_string_checkChaosTxt(input,toinput)
{
	var color_ok 		= '#30971F';
	var color_error 	= '#FF0000';
	
	if(input == toinput)
	{
		document.getElementById('chaos_txt_result').innerHTML = '<span style="font-weight:bold;color:' + color_ok + ';">Eingabe ok!</span>';
	}
	else
	{
		document.getElementById('chaos_txt_result').innerHTML = '<span style="font-weight:bold;color:' + color_error + ';">Eingabe falsch!</span>';
	}
}

// falcon_string_checkEmail(s): check if an email adress is true
function falcon_string_checkEmail(s)
{
	var a = false;
 	var res = false;
 
 	if(typeof(RegExp) == 'function')
 	{
  		var b = new RegExp('abc');
  	
		if(b.test('abc') == true){a = true;}
  	}

 	if(a == true)
 	{
  		reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                   '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                   '(\\.)([a-zA-Z]{2,4})$');
  		res = (reg.test(s));
 	}
 	else
 	{
  		res = (s.search('@') >= 1 &&
         s.lastIndexOf('.') > s.search('@') &&
         s.lastIndexOf('.') >= s.length-5)
 	}
 
 	return(res);
}