// valid email
function valid_email(email) {
	var re_email = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return re_email.test(email)
}

function valid_signup(form) {
	var invalid_input = Array();
	
	// remove
	$('.finput_invalid').removeClass('finput_invalid');
	$('.frmerror').remove();
	
	// check firstname, lastname and email
	var input = new Array('firstname','lastname','email');
	$.each(input, function(i) {
		if( $('#' + input[i]).val() == '' ) {
			invalid_input.push( $('label[for='+input[i]+']').text().replace('*','') );
			$('#'+input[i]).addClass('finput_invalid');
			$('label[for='+input[i]+']').addClass('finput_invalid');
		}
	});

	// valid email
	var re_email = /^(\w+[\-\.])*\w+@(\w+\.)+[A-Za-z]+$/;
	var email = $('#email');
	if(!re_email.test(email.val())) {
		invalid_input.push( $('label[for=email]').text().replace('*','') );
		email.addClass('finput_invalid');
		$('label[for=email]').addClass('finput_invalid');
	}

	// conditions
	var conditions = $('#conditions:checked');
	if(!conditions.length) {
		invalid_input.push( $('label[for=conditions]').text().replace('*','') );
		$('label[for=conditions]').addClass('finput_invalid');
	}	
	
	return $.unique(invalid_input);
}

/* --- check objecttour input --- */
function valid_objecttour(form) {

	form.find('.finput_invalid').removeClass('finput_invalid');

	var phone = $('#phone').val(),
		days = $('#days'),
		daypart = $('#daypart'),
		email = $('#email'),
		phone = $('#phone'),
		valid = true;
	
	if( days.val() == '' ) {
		days.addClass('finput_invalid');
		valid = false;
	}
	if( daypart.val() == '' ) {
		daypart.addClass('finput_invalid');
		valid = false;
	}
	if( !valid_email(email.val()) ) {
		email.addClass('finput_invalid');
		valid = false;
	}
	if( phone.val() ==  '' || phone.val() == $('label[for=phone]').text() ) {
		phone.addClass('finput_invalid');
		valid = false;
	}
	
	console.log( valid );
	return valid;

}


/* --- sorteren van het aanbod overzicht --- */
function sortOverview(order) {
	$('#project_resultlist').load('/index.cfm?act=plugin_rentals.filter&tab=lijst', 'sort='+order);
}

$(document).ready(function() {


	if( $.fn.photoslider ) $('.photoalbum').photoslider();
	if( $.fn.fancyform ) $('.mergelabel').fancyform('mergeLabel');

	/* --- rounded corners --- */
	var html = '<div class="corner_topleft"></div><div class="corner_topright"></div><div class="corner_bottomleft"></div><div class="corner_bottomright"></div>';
	$('#objectfilter_form,nav#main, nav#main li, nav#langswitch, nav#langswitch li, div.kamerraad_summary, ul.projectlist li.projectlist_item, ul.projectlist div.inner, ul#project_resultlist li, ul#project_resultlist a.imgwrp, article.project_summary, aside, aside div.inner, .moreinfo, #signup, .project_info, .project_options li, .project_options li a').append( html );
	html = '<div class="corner_topleft"></div><div class="corner_topright"></div>';
	$('.tabs a').append( html );
	
	/* --- fancy submit  --- */
	var fsubmit = $('input.fsubmit');
	if( fsubmit.length ) {
		fsubmit.each(function(i) {
			fsubmit.eq(i).after('<a href="#" id="' + fsubmit.eq(i).attr('id') + '_tmp" class="' + fsubmit.eq(i).attr('class') + '"><div class="left"></div><div class="txt">' + fsubmit.eq(i).val() + '</div><div class="right"></div></a>').hide();
			$('#' + fsubmit.eq(i).attr('id') + '_tmp').click(function() {
				$(this).parents('form').submit();
				return false;
			});
			
		});
	}
	
	/* --- vertical align 'zoek' --- */
	var objectfilter = $('.objectfilter');
	if( objectfilter.length ) {
		objectfilter.find('.fsubmit').css('margin-top', -20 + Math.round((objectfilter.find('td').height() - objectfilter.find('.fsubmit .txt').outerHeight())/2));
	}

	/* --- signup ---- */
	var signup = $('#signup');
	if( signup.length ) {
		signup.find('legend').each(function() {
			$(this).after('<h2>' + $(this).text() + '</h2>').remove();
		});
		signup.submit(function() {
			var signup_invalid = valid_signup(signup);
			
			if(signup_invalid.length) {
				$('html, body').animate({scrollTop:0}, 500);
				$.ajax({
					url: '/inc/ajax/inschrijven_error.cfm',
					success: function(data) {
						signup.find('fieldset:eq(0)').before(data);
						var signup_frmerror = signup.find('.frmerror ul');
						$.each(signup_invalid,function(i) {
							signup_frmerror.append('<li>'+signup_invalid[i]+'</li>');
						});
					},
					async: false
				});
			} else {
				$.ajax({
					type: 'POST',
					url: signup.attr('action'),
					data: signup.serialize(),
					success: function(data) {
						var html = '<div class="corner_topleft"></div><div class="corner_topright"></div><div class="corner_bottomleft"></div><div class="corner_bottomright"></div>';
						$('#signupcontainer').html(data);
						$('#signupcontainer').append(html);
					}
				});
			}

			return false;
			
		});
	}

	/* --- objecttour ---- */
	var objecttour = $('#objecttour');
	if( objecttour.length ) {
		objecttour.submit(function() {
			if( valid_objecttour( objecttour ) ) {
				$.ajax({
					type: 'POST',
					url: objecttour.attr('action'),
					data: objecttour.serialize(),
					success: function(data) {
						$('#aside_tour .inner').html(data);
					}
				});
			}
		});
	}


	/* --- objectfilter: create a copy ---- */

	var objectfilter = $('form.objectfilter');
	var add = '_copy';
	if( objectfilter.length ) {

		var project_info_map = $('div#project_info_map'),
			project_info_list = $('div#project_info_list'),
			elem = ( project_info_map.length ) ? project_info_map : project_info_list;

		// duplicate objectfilter
		elem.after( objectfilter.clone() );

		// create unique id,name and label[for] for objectfilter copy
		var objectfilter_copy = elem.next();
		objectfilter_copy.find('input,select').each(function(i) {
			$(this).attr('id', $(this).attr('id') + add).attr('name', $(this).attr('name') + add);
			if( this.tagName.toLowerCase() == 'select' ) {
				$(this).val( $('#' + $(this).attr('id').replace(add,'') + ' option:selected').val()  );
			}
		})
		objectfilter_copy.find('label').each(function(i) {
			$(this).attr('for', $(this).attr('for') + add);
		})
		
		// duplicate state of checkbox
		$('.objectfilter input').change(function() {
			var checkbox_name = $(this).attr('id').replace(add,'');
			if( $(this).attr('checked') )
				$('#' + checkbox_name + ',#' + checkbox_name + add).attr('checked','checked');
			else 
				$('#' + checkbox_name + ',#' + checkbox_name + add).removeAttr('checked');
		});

		// duplicate state of <select>
		$('.objectfilter select').change(function() {
			var select_name = $(this).attr('id').replace(add,'');			
			$('.objectfilter select#' + select_name + ',.objectfilter select#' + select_name + add).val( $(this).find('option:selected').val() );
		});
		
		// post
		objectfilter_copy.find('.fsubmit').click(function() {
			objectfilter.submit();
			return false;
		});

		objectfilter.submit(function() {
			// Submit filterform
			if($('#project_resultlist').length > 0) {
				$('#project_resultlist').load('/index.cfm?act=plugin_rentals.filter&tab=lijst', objectfilter.serialize());
			} else {
				/*alert('gmap');*/
				$('#gmap_javascript').load('/index.cfm?act=plugin_rentals.filter&tab=kaart', objectfilter.serialize());
				/*gmaptest();*/
			}
			return false;
		});

	}
			
			
	/* --- loading more projects into list ---- */

	var project_resultlist = $('#project_resultlist');
	if( project_resultlist.length ) {
		$('a.more_objects').click(function() {
			project_resultlist.find('.loading').remove();
			// show preloader
			$.ajax({
				url: 'inc/ajax/preloader.cfm',
				success: function(data) {
					project_resultlist.append(data);
					var loading_index = project_resultlist.find('li.loading').index();
					// get results
					$.get('inc/ajax/actueel_aanbod.cfm', function(data) {
						project_resultlist.append(data);
						project_resultlist.find('li:gt('+loading_index+')').hide();
						project_resultlist.find('li:eq('+loading_index+')').remove();
						project_resultlist.find('li:hidden').slideToggle();
					});
				},
				async: false
			});
			return false;
		});
	}

	/* --- stuur deze woning door --- */
	
	$("a.fancyAjax").fancybox({
		ajax : { type	: "GET" },
		autoDimensions: false,
		width: 325,
		height: 220
	});
	
});
