/*
<ChangeLog>
 <Versions>
 <Version> 
   <Version>1.0.1</Version> 
   <DateTime>15.1.2009 10:38:52</DateTime>
   <Author>Marek Skotnica</Author> 
   <Description>
	Added new function to simple validate text field value if is in min and max range.
	</Description> 
  </Version> 
  <Version> 
   <Version>1.0</Version> 
   <DateTime>17.12.2008 17:38:52</DateTime>
   <Author>Marek Skotnica</Author> 
   <Description>class for validation common formats using regex
	//Functions: 
	//		KarsaValidate.Psc(psc)  - Validation PSC
	//		KarsaValidate.CzePhone(phoneNumber) Validation czech phone number
	//		KarsaValidate..Email(eMail) - Validation e-mail 
	</Description> 
  </Version> 
 </Versions>
</ChangeLog>
*/

//////////////////////////////////////////////////////////////////////
//class for validation common formats
//Functions: 
//		KarsaValidate.Psc(psc)  - Validation PSC
//		KarsaValidate.CzePhone(phoneNumber) Validation czech phone number
//		KarsaValidate..Email(eMail) - Validation e-mail 
//////////////////////////////////////////////////////////////////////

var KarsaValidate = {
    ///<summary>This class contains common validation functions.</summary>
	Psc: function(psc){
	    ///<summary>Validate czech psc. Alowed PSC are "12345" and "123 45"</summary>
        ///<param name="psc">Psc we want to test in string. </param>
        ///<returns type="bool">True if psc is valid.</returns>
		var rx_psc = /^\d{3} ?\d{2}$/;
		return rx_psc.test(psc);
	} ,
	
	CzePhone: function (phone){
		///<summary>Validate czech phone.</summary>
        ///<param name="phone">Phone we want to test in string. </param>
        ///<returns type="bool">True if phone number is valid.</returns>
		var rx_cze_phone = /^(\+\d{3})? ?\d{3} ?\d{3} ?\d{3}$/;
		return rx_cze_phone.test(phone);
	} , 

	Email: function(email) {
		///<summary>validate email acording RFC2822 specification</summary>
        ///<param name="email">Email we want to test in string. </param>
        ///<returns type="bool">True if email is valid.</returns>
		var rx_local_strict = /^[a-zA-Z0-9\!\#\$\%\*\/\?\|\^\{\}\`\~\&\'\+\-\=\_\.]{1,64}@[^\@]+$/;
		var rx_local_quotes = /^\".{1,62}\"@[^\@]+$/;
		var rx_domain_named = /@[a-zA-Z0-9\-\.]{1,255}$/;
		var rx_domain_addr = /@\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\]$/;
		var rx_wrong1 = /(\.\.)|(^\.)|(\.@)|(@\.)/;
		var rx_wrong2 = /^[^\"].*@+.*[^\"]@[^\@]*$/;
		if ((rx_local_strict.test(email) || rx_local_quotes.test(email)) &&
		(rx_domain_named.test(email) || rx_domain_addr.test(email)) &&
		!rx_wrong1.test(email) &&
		!rx_wrong2.test(email)) {
			return true;
		}
		else {
			return false;
		}
	}, 
	
	TextField : function(field, minValue, maxValue){
		///<summary>Simple validate domElement value if match min and max length.</summary>
        ///<param name="field" value = "domElement" >field with value</param>
        ///<param name="minValue" value = "int" >Minimal value length.</param>
        ///<param name="maxValue" value = "int" >Maximum value length.</param>
        ///<returns type="bool">True if field value is in range. </returns>
		if(field.value.length > minValue && field.value.length < maxValue)
			return true;
		return false;
	}

}