// FUNCTIES MET BETREKKING TOT FORMULIER, CHECKS, REPLACEMENTS, ETC
var forms	=	function(options){
	
	var $search = $('form:has(.search)');
	
	if($search.length > 0){
		$search.submit(function(){
			
			var $input = $(this).find('input[type=text]');
			
			if(!formValidate('required', $input.val()) || $input.attr('alt') == $input.val() ||  $input.attr('lang') == $input.val()){
				$search.find('div').addClass('error');
				return false;
			}
			else{
				$search.find('div').removeClass('error');
				location = $(this).attr('action')+'/'+$input.val();				
				return false;
			}
					
		});
	}

	
	var $form = $('form:has(.form)');
	
	/* FANCY FORM */
	if(options.checkbox){
		$form.find('input[type=checkbox]').checkbox({
			cls: 'jquery-checkbox',
			empty:'/style/naturecounts/images/common/pixel.gif'
		});
	}
	
	if(options.checkbox){
		$form.find('input[type=radio]').checkbox({
			cls: 'jquery-radio',
			empty:'/style/naturecounts/images/common/pixel.gif'
		});
	}
	
	if(options.selectbox){
		
		var i = 5 + $('select').length;
		
		$('select').selectbox().each(function(){
			
			$(this).parents('li').css({'z-index':i});
			
			i--;
		});
	}
	
	if(options.filestyle){
		$form.find('input[type=file]').filestyle();
	}
	
	/* FIELD ACTIONS */
	$('form').find('input, textarea').focus(function(){
		var $input = $(this);
		
		if($input.val() == $input.attr('alt') || $input.val() == $input.attr('lang') ){
			$input.val('');
		}
	});
		
	$('form').find('input, textarea').blur(function(){
		var $input = $(this);
		var $field = $input.parents('li');
		var value = $input.attr('lang') ? $input.attr('lang') : $input.attr('alt');
		
		if( ($input.val() == '' && value != '') ){
			$input.val(value);
		}
		
		var validate = $field.find('.verplicht').attr('class') ? $field.find('.verplicht').attr('class').replace('verplicht ','') : '';		
				
		if(validate != '' && $field.find('.verplicht').length > 0){
			
			if(!formValidate(validate, $input.val()) || $input.attr('alt') == $input.val() ||  $input.attr('lang') == $input.val()){
				$field.find('.normal').removeClass('ok').addClass('error');
			}
			else{
				$field.find('.normal').removeClass('error').addClass('ok');
			}
		}
	});
	
	$form.find('select').change(function(){
										 
		var $input = $(this);
		var $field = $input.parents('li');
		
		var validate = $field.find('.verplicht').attr('class') ? $field.find('.verplicht').attr('class').replace('verplicht ','') : '';		
		
		if(validate != '' && $field.find('.verplicht').length > 0){
				
			if(!formValidate(validate, $input.val())){
				$field.find('.normal').removeClass('ok').addClass('error');
			}
			else{
				$field.find('.normal').removeClass('error').addClass('ok');
			}
		}

	});
	
	
	$form.find('.hide').append('<input type="hidden" name="sid" value="'+$('meta[name=sid]').attr('content')+'" />');
	
	$form.submit(function(){					
		var $this = $(this);
		var bool = true;
		
		$this.find('.normal').removeClass('error');
			
		$this.find('li').each(function(){
									   
			var $field = $(this);
			var validate = $field.find('.verplicht').attr('class') ? $field.find('.verplicht').attr('class').replace('verplicht ','') : '';

			if(validate != '' && $field.find('.verplicht').length > 0){
				
				var value = $field.find('input, textarea, select').attr('lang') ? $field.find('input, textarea, select').attr('lang') : $field.find('input, textarea, select').attr('alt');
				
				if(!formValidate(validate, $field.find('input, textarea, select').val()) || value == $field.find('input, textarea, select').val()){
					$field.find('.normal').removeClass('ok').addClass('error');
					bool = false;
				}
				else{
					$field.find('.normal').removeClass('error').addClass('ok');			
				}
			}
		});
				
		return bool;
						
	});
	
}

var formValidate = function(type, value){
	
	switch(type){
		case 'verplicht':
		case 'required':
			return value.length == 0 ? false : true;
		break;
		case 'email':
			return validEmail(value);
		break;
		case 'url':
			return validUrl(value);
		break;
		case 'number':
			return validInt(value);
		break;
		case 'date':
			return validDate(value);
		break;
	}
	return true;
}

// CHECK FOR VALID EMAIL
var validEmail	=	function(str) {
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
		return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
		return false
	 }
	
	 if (str.indexOf(" ")!=-1){
		return false
	 }
	 return true					
}

// CHECK FOR VALID URL
var validUrl	=	function(url){
 	var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    return RegExp.test(url);
}

// CHECK FOR VALID INT
var validInt	=	function(nr){
	var RegExp = /^[-+]?\d+(\.\d+)?$/;
	return RegExp.test(nr);
}

// CHECK FOR VALID DATES
var validDate	=	function(date){
		
	if(date){ 
			
		date = date.replace(/[\/:,\. ]/gi,'-');
		
		var dateParts = date.split('-');
		date = parseInt(dateParts[0]) + '-' + parseInt(dateParts[1]) + '-' + parseInt(dateParts[2]);
		
		var check = new Date();
		check.setFullYear(parseInt(dateParts[2]), parseInt(dateParts[1]), parseInt(dateParts[0])); // Y m d
		
		var checkDate = check.getDate() + '-' + check.getMonth() + '-' + check.getFullYear();
				
		if(date == checkDate && date != 'NaN-NaN-NaN'){
			return true;
		}
		return false
	}
	return false;	
}
