/* main.js */
function check_email(emailStr)
{
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) 
	{		 
		 return "E-mail Address is incorrect (check '@' and '.')"
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	
	if (user.match(userPat)==null) 
	{
	    return "Check e-mail format"
	}
	
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) 
	{
		  for (var i=1;i<=4;i++) 
		  {
		    if (IPArray[i]>255) 
		    {
		    	 return "Check IP address"
		    }
	    }
	    return true
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) 
	{
		return "The domain entered for the email address appears incorrect. It should be in the format 'domain.com'"
	}	
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2) 
	{
	   return "Check domain address"
	}	
	if (len<2) 
	{
	   return "Email address is incorrect"
	}	
	return 1; // no error
}

function check_allowed_characters(param,goodSigns) 
{ 	 
	 for (i=0; i<param.length; i++) 
	 {
	 	 sign=param.charAt(i)
	    if (goodSigns.indexOf(sign,0) == -1){ return false }
	 }
	 return true;
}

function form_live_check(element_id, min, max, check, allowed_char)
{
	// @PARAM
	//
	// element_id             - which input/element we are checking
	// min, max               - minimum and maximum length
	// check                  - calls external function and execute email check on this element
	//							1) email_check 
	// allowed_char           - check allowed characters
	//							for example: 'abcdefghijklmnopqrstuvwxyz0123456789-'
	
	// define YES and NO icons
	var icon_yes = "#fff url(/_templates/visualadmin1/skins/1/imageset/icons_form/yes.gif) top right no-repeat";
	var icon_no = "#fff url(/_templates/visualadmin1/skins/1/imageset/icons_form/no.gif) top right no-repeat";
	
	// switch background
	var get_element_value = $('#'+element_id).val();
	
	// this prevent JS error and doesnt stop the script if element doesn exist
	if( get_element_value==undefined ){return false;}
	
	// start checking
	if( get_element_value.length >= min && get_element_value.length <= max )	
	{ 
		
		// check if email
		if( check=='email_check' )
		{
			var email_check_result = check_email(get_element_value);
			if( email_check_result==1 )
			{
				$('#'+element_id).css("background",icon_yes);
			}
			else
			{
				$('#'+element_id).css("background",icon_no); 
				return false;
			}
		}
		
		// check characters
		if( allowed_char!='' )
		{
			if( check_allowed_characters(get_element_value,allowed_char) )
			{
				$('#'+element_id).css("background",icon_yes);
			}
			else
			{
				$('#'+element_id).css("background",icon_no); 
				return false;
			}
		}
		
		// OK
		$('#'+element_id).css("background",icon_yes); 
		return true;
		
	}
	else 
	{ 
		// error
		$('#'+element_id).css("background",icon_no); 
		return false;
	}	 		
	
}

function input_show_default(selector, defvalue) 
{
    if($.trim($(selector).val()) == "") 
    {
        $(selector).val(defvalue);
    }
    $(selector).focus(function() 
    {
        if($(selector).val() == defvalue) 
        {
            $(selector).val("");
        }
    });
    $(selector).blur(function() 
    {
        if($.trim($(selector).val()) == "") 
        {
            $(selector).val(defvalue);
        }
    });
}
