$(document).ready(function() {
	
	// cache achtergrond img van error voor ie6
	var cimg = $.create('img', {'src': DEFINE.get(http_server) + '/images/frm_error_msg_bg.gif', 'style':'visibility:hidden;width:0px;height:0px;overflow:hidden;'}, []);
	$('body').append($(cimg));
	
	$('#frm_contact').submit(function() {
		var x = true;
		
		//reset
		$('.frm_error_mssg').each( function(e) { $(this).remove(); });
		if ( jQuery.browser.msie === false ) {
			$('#frm_contact').find('input[type=text]').each( function(e) { $(this).animate({ borderColor: '#A3A3A3', backgroundColor: '#FFFFFF' }, 'fast' ); });
			$('#frm_contact').find('textarea').each( function(e) { $(this).animate({ borderColor: '#A3A3A3', backgroundColor: '#FFFFFF' }, 'fast' ); });
			$('#frm_contact').find('select').each( function(e) { $(this).animate({ borderColor: '#A3A3A3', backgroundColor: '#FFFFFF' }, 'fast' ); });
		}
		
		$(this).find('input, textarea, select').each( function(obj) {
			if (validate_field($(this)) === false) {
				x = false;
			}
		});
		
		if (x == false) {
			return false;
		} else {
			return true;
		}
		
		
	});
	
	$('#frm_contact').find('input, textarea, select').blur( function(obj) {
		$('#error_' + $(this).attr('name')).remove();
		if ( jQuery.browser.msie === false ) {
			$(this).animate({ borderColor: '#A3A3A3', backgroundColor: '#FFFFFF' }, 'fast' );
		} else {
			$(this).css({ borderColor: '#A3A3A3', backgroundColor: '#FFFFFF' });
		}
		validate_field($(this));
	});
	
	function create_frm_alert(data) {
		offset = $('[name='+data['cobj']+']').offset();
		 
		var o = $.create('div', {'id':'error_' + data['cobj'], 'class':'frm_error_mssg'}, [''+data['mssg']+'']);
		$('body').append($(o));
		
		$('#error_' + data['cobj']).css({
			width: 'auto',
			height: 12,
			top: offset.top,
			left: ( offset.left + $('[name='+data['cobj']+']').width() + 20 ),
			padding: '4px 4px 4px 15px',
			position: 'absolute',
			background: 'url(\'' + DEFINE.get(http_server) + '/images/frm_error_msg_bg.gif\') left center no-repeat transparent',
			borderRight: '1px solid #A3A3A3',
			fontSize: 10,
			opacity: 0
		})
		
		$('#error_' + data['cobj']).animate({ 
			opacity: 1
		}, 'medium' );
		
		if ( jQuery.browser.msie === false ) {
			$('[name='+data['cobj']+']').animate({
				borderColor: '#FF0000',
				backgroundColor: '#a9dbff'
			}, 'fast' );
		} else {
			$('[name='+data['cobj']+']').css({ borderColor: '#FF0000', backgroundColor: '#a9dbff' });
		}
	}
	
	function validate_field(check_field) {
		var validated = true;
		variables = '' + check_field.attr('rel');
		current_object = '' + check_field.attr('name');			
		if (variables.indexOf('val:') != -1) {
			x = variables.replace('val:','');
			x = x.split('}{');
			
			value = check_field.val();
			$.each(x,function( key, item ){
				item = item.replace('{','');
				item = item.replace('}','');
				item = item.split(',');
				
				if (item[0] == 'len') {
					if (value.length < parseInt(item[1])) {
						validated = false;
						create_frm_alert({'cobj':current_object,'mssg':item[2]});
					}
				} else if (item[0] == 'type' && item[1] == 'str') {
					if (typeof value != 'string') {
						validated = false;
						create_frm_alert({'cobj':current_object,'mssg':item[2]});
					}
				} else if (item[0] == 'type' && item[1] == 'int') {
					if (typeof value != 'number') {
						validated = false;
						create_frm_alert({'cobj':current_object,'mssg':item[2]});
					}
				} else if (item[0] == 'type' && item[1] == 'float') {
					if (typeof value != 'float') {
						validated = false;
						create_frm_alert({'cobj':current_object,'mssg':item[2]});
					}
				} else if (item[0] == 'type' && item[1] == 'tel') {
					if ( value.length<10 ) {
						validated = false;
						create_frm_alert({'cobj':current_object,'mssg':item[2]});
					}
				} else if (item[0] == 'type' && item[1] == 'mail') {
					if ( value.length<5 || value.indexOf('@') == -1 || value.indexOf('.') == -1 ) {
						validated = false;
						create_frm_alert({'cobj':current_object,'mssg':item[2]});
					}
				}
			});
		}
		
		return validated;
	}
	
});
