// http://www.bitstorm.org/jquery/color-animation/
(function(d){function i(){var b=d("script:first"),a=b.css("color"),c=false;if(/^rgba/.test(a))c=true;else try{c=a!=b.css("color","rgba(0, 0, 0, 0.5)").css("color");b.css("color",a)}catch(e){}return c}function g(b,a,c){var e="rgb"+(d.support.rgba?"a":"")+"("+parseInt(b[0]+c*(a[0]-b[0]),10)+","+parseInt(b[1]+c*(a[1]-b[1]),10)+","+parseInt(b[2]+c*(a[2]-b[2]),10);if(d.support.rgba)e+=","+(b&&a?parseFloat(b[3]+c*(a[3]-b[3])):1);e+=")";return e}function f(b){var a,c;if(a=/#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/.exec(b))c=
[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1];else if(a=/#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/.exec(b))c=[parseInt(a[1],16)*17,parseInt(a[2],16)*17,parseInt(a[3],16)*17,1];else if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))c=[parseInt(a[1]),parseInt(a[2]),parseInt(a[3]),1];else if(a=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([01\.]*)\s*\)/.exec(b))c=[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10),parseFloat(a[4])];return c}
d.extend(true,d,{support:{rgba:i()}});var h=["color","backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","outlineColor"];d.each(h,function(b,a){d.fx.step[a]=function(c){if(!c.init){c.a=f(d(c.elem).css(a));c.end=f(c.end);c.init=true}c.elem.style[a]=g(c.a,c.end,c.pos)}});d.fx.step.borderColor=function(b){if(!b.init)b.end=f(b.end);var a=h.slice(2,6);d.each(a,function(c,e){b.init||(b[e]={a:f(d(b.elem).css(e))});b.elem.style[e]=g(b[e].a,b.end,b.pos)});b.init=true}})(jQuery);



/*
		
example:
	$('form #submit').click(function() {
		var error = false;
		var email = $('#email').val();
		
		if( !checkEmailAddress(email) ) {
			$('#email').colorHighlight();
			//$('#email').colorHighlight({ 'animateColor': false, 'animateBackgroundColor': true });
			error = true;
		}
	});

functions:
	empty( string )
	validateFullName( string ) // min. 2x3 karakter
	isNumeric( string ) // min. 1 karakter
	validatePhoneNumber( string )
	minLength( string, number )
	maxLength( string, number ) // min. 1 karakter
	checkEmailAddress( string )

leírás
	- rgba nem támogatott
	- live nem támogatott

*/

// redenHover JQuery plugin
(function( $ ){
	$.fn.colorHighlight = function( options ) {
		
		
		// default settings
		var settings = {
			'animateBackgroundColor': false, // alapértelmezetten színt animál, ha ez true, akkor háttérszínt (de színt nem)
			'color': '#D91A21',
			'fadeTime': 250,
			'delay': 750
		};
		
		if( options ) { 
			$.extend( settings, options );
		}
		
		// variables
		var default_color = '';
		var default_background_color = '';
		
		if( this.is('select') && $.browser.opera ) {
			settings.animateBackgroundColor = false;
		}
		
		return this.each(function() {
			
			default_color = $(this).css('color');
			default_background_color = $(this).css('background-color');
			
			if( settings.animateBackgroundColor ) {
				$(this)
					.stop()
					.animate(
						{
							backgroundColor: settings.color
						},
						settings.fadeTime
					)
					.delay( settings.delay )
					.animate(
						{
							backgroundColor: default_background_color
						},
						settings.fadeTime
					);
			}
			
			else {
				$(this)
					.stop()
					.animate(
						{
							'color': settings.color
						},
						settings.fadeTime
					)
					.delay( settings.delay )
					.animate(
						{
							'color': default_color
						},
						settings.fadeTime
					);
			}
			
		});
		
		
	};
})( jQuery );



function empty( val ) {
	if( val == '' || val == null || val == undefined ) {
		return true;
	}
	return false;
}



// legalább 2 db 3 betűs szó
function validateFullName( val ) {
	if( val.match(/[a-zA-ZűáéúőóüöíŰÁÉÚŐÓÜÖÍ]{3,} [a-zA-ZűáéúőóüöíŰÁÉÚŐÓÜÖÍ]{3,}/g) ) {
		return true;
	}
	return false;
}



function validatePhoneNumber( val ) {
	if( empty(val) ) {
		return false;
	}
	if( val.length >= 7 && val.length <= 9 && val.match(/^([0-9]{1,2})([0-9]{6,7})$/g) ) {
		return true;
	}
	return false;
}



function isNumeric( val ) {
	if( empty(val) ) {
		return false;
	}
	var ValidChars = '0123456789';
	for( i = 0; i < val.length; i++ ) {
		Char = val.charAt( i );
		if( ValidChars.indexOf(Char) == -1 ) {
			return false;
		}
	}
	return true;
}



function minLength( string, number ) {
	if( string.length >= number ) {
		return true;
	}
	return false;
}



function maxLength( string, number ) {
	if( empty(string) ) {
		return false;
	}
	if( string.length <= number ) {
		return true;
	}
	return false;
}



function checkSelect( val ) {
	if( val == -2 ) {
		return false;
	}
	return true;
}


function checkEmailAddress( emailStr ) {
	var checkTLD = 1;
	var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	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 false;
	}
	
	var user = matchArray[1];
	var domain = matchArray[2];
	
	for( i = 0; i < user.length; i++ ) {
		if( user.charCodeAt(i) > 127 ) {
			return false;
		}
	}
	
	for( i = 0; i < domain.length; i++ ) {
		if( domain.charCodeAt(i) > 127 ) {
			return false;
		}
	}
	
	if( user.match(userPat) == null ) {
		return false;
	}
	
	var IPArray = domain.match( ipDomainPat );
	if( IPArray != null ) {
		for( var i = 1; i <= 4; i++ ) {
			if( IPArray[i] > 255 ) {
				return false;
			}
		}
		return true;
	}
	
	var atomPat = new RegExp("^" + atom + "$");
	var domArr = domain.split(".");
	var len = domArr.length;
	
	for( i = 0; i < len; i++ ) {
		if( domArr[i].search(atomPat) == -1 ) {
			return false;
		}
	}
	
	if( checkTLD && domArr[domArr.length-1].length != 2 && domArr[domArr.length-1].search(knownDomsPat) == -1 ) {
		return false;
	}
	
	if( len < 2 ) {
		return false;
	}
	
	return true;
}

