if (typeof console == 'undefined') {
	var console = {
		info: function() {},
		dir: function() {},
		group: function() {},
		groupEnd: function() {}
	};
}

SVL = {};

SVL.accordeon = function(el){
	var oParent = el.find('ul').parent();
	var oCurrent = el.find('li.current');
	oParent.addClass('parent');
	
	if(oCurrent) {
		oCurrent.find('ul').show();
	}
	
	oParent.click(function(){
		
		var oTarg = $(this).find('ul');
		if(oTarg && oTarg.is(':visible')) {
			oTarg.slideUp('fast').removeClass();
		}
		
		if(oTarg && !oTarg.is(':visible')) {
			$('li.parent ul.active').slideUp('fast');
			if(oCurrent.is(':visible')) { oCurrent.find('ul').slideUp('fast'); }
			oTarg.slideDown('fast').addClass('active');
			
		}
			
	});
		
};

SVL.doForms = {
	
	init	: function() {
		$('.content .formholder').hide();
		this.doToggleBinding();
		this.processForm();
		
	},
	processForm : function() {
		var arrForm = $('form');
		
		arrForm.each(function() {
			var oForm = $(this);
			var formId = oForm.attr('id');
		//	alert(formId);
						
			switch(formId) {
				case 'contactForm':
					SVL.doForms.contact(formId);
				break;
				
				case 'batterijenForm':
					SVL.doForms.batterijen(formId);
				break;
				
				default:
					SVL.doForms.doDefault(formId);
				break;
			}
		});
	},
	doDefault : function(formId) {
		var defaultForm = '#' + formId;
		
		var validDefault = $(defaultForm).validate({
			rules		: {
				naam : {
					required : true,
					minlength : 2
				},
				telefoonnummer : {
						required	: true,
						digits		: true
				},
				emailadres: {
						required: true,
						email: true
				},
				organisatie: 'required',
				bericht: 'required'
				
			},
			messages	: {
				naam : {
					required	: 'Vul uw naam in.',
					minlength	: 'Je naam moet tenminste 2 letters hebben.'
				},
				telefoonnummer : {
					required	: 'Vul een telefoonnummer in.',
					digits		: 'Een telefoonnummer bevat alleen cijfers.'
				},
				emailadres : { 
					required	: 'Vul een geldig e-mailadres in.',
					minlength	: 'Vul een geldig e-mailadres in.'
					
				},
				organisatie: {
					required	: 'Vul een bedrijfsnaam in.'
				},
				bericht : {
					required	: 'Vul een bericht in.'
				}
			},
			submitHandler : function(form) {
				form.submit();
			}
		});
	},
	contact : function(formId) { //@ Toggle behaviour
		var contactForm = '#' + formId;
		
		var validContact = $(contactForm).validate({
			rules		: {
				naam : {
					required : true,
					minlength : 2
				},
				telefoonnummer : {
						required	: true,
						digits		: true
				},
				emailadres: {
						required: true,
						email: true
				},
				organisatie: 'required',
				onderwerp 	: 'required',
				bericht: 'required'
				
			},
			messages	: {
				naam : {
					required	: 'Vul uw naam in.',
					minlength	: 'Je naam moet tenminste 2 letters hebben.'
				},
				telefoonnummer : {
					required	: 'Vul een telefoonnummer in.',
					digits		: 'Een telefoonnummer bevat alleen cijfers.'
				},
				emailadres : { 
					required	: 'Vul een geldig e-mailadres in.',
					minlength	: 'Vul een geldig e-mailadres in.'
					
				},
				organisatie: {
					required	: 'Vul een bedrijfsnaam in.'
				},
				onderwerp : {
					required	:'Vul het onderwerp van het bericht in.'
				},
				bericht : {
					required	: 'Vul een bericht in.'
				}
			},
			submitHandler : function(form) {
				form.submit();
			}
		});
	},
	batterijen : function(formId) { //@ Toggle behaviour
		var batterijenForm = '#' + formId;
		
		var validBatterij = $(batterijenForm).validate({
			rules		: {
				naam : {
					required : true,
					minlength : 2
				},
				telefoonnummer : {
						required	: true,
						digits		: true
				},
				emailadres: {
						required: true,
						email: true
				},
				organisatie: 'required',
				accubak		: 'required',
				voltage		: 'required',
				merk		: 'required',
				type		: 'required'
			},
			messages	: {
				naam : {
					required	: 'Vul uw naam in.',
					minlength	: 'Je naam moet tenminste 2 letters hebben.'
				},
				telefoonnummer : {
					required	: 'Vul een telefoonnummer in.',
					digits		: 'Een telefoonnummer bevat alleen cijfers.'
				},
				emailadres : { 
					required	: 'Vul een geldig e-mailadres in.',
					minlength	: 'Vul een geldig e-mailadres in.'
					
				},
				organisatie: {
					required	: 'Vul een bedrijfsnaam in.'
				},
				accubak : {
					required : 'vul de afmeting van de accubak in.'
				},
				voltage : {
					required : 'Vul de voltage in.'
				},
				merk : {
					required : 'Vul het merk heftruck in.'
				},
				type : {
					required : 'Vul het type heftruck in.'
				}
			}
		});
	},
	resetForm : function(formId) {
		var oForm = $('#' + formId);
		
		oForm.each(function() {
			var type = $('input', $(this)).attr('type');
			var tag = $(this).get(0).tagName.toLowerCase();
			if (type == 'text' || type == 'password' || tag == 'textarea') {
				this.value = '';
			}
		});
		
	},
	toggleForm : function(el) { //@ Toggle behaviour
		
		var toggle = el.next();
		
		if($('.product_list').is(":visible:")) {
			var oTarg = el.parents('li').find('.formholder');
		} else {
			var oTarg = el.parents('.content').find('.formholder');
		/*	alert('please?'); */
		}
		
		var formId = oTarg.find('form').attr('id');
		
		if(oTarg && oTarg.is(":visible")) {
			toggle.find('span').toggleClass('active');
			
			el.text('Aanvragen');
			oTarg.slideToggle('fast');
			SVL.doForms.resetForm(formId);
		}
		
		if(oTarg && !oTarg.is(":visible")) {
			$('.content .formholder').slideUp('fast');
			$('.order span.active').toggleClass('active');
			toggle.find('span').toggleClass('active');
			$('.content a.button').text('Aanvragen');
			el.text('Annuleren');
			oTarg.slideToggle('fast');
					
		}
	},
	doToggleBinding : function() {
		$('.order a.button').bind('click', function() { 
										  		SVL.doForms.toggleForm($(this));
												return false;
										  });
	}
};


$(document).ready(function() {
	
	var acc_item = $('#navigation');
	SVL.accordeon(acc_item);
	
	SVL.doForms.init();
	
	$("a[rel=magnify]").fancybox();
	$("a[rel=lightbox]").fancybox();
	$("a.grouped_elements").fancybox();
	
});
