/* gh.js ***/
$(document).ready(function() {
	//$('#singlescreen a').click(showContent);

	if($('#faq').length > 0) {
		initAccordion();
	}

	if($('#contact_form').length > 0) {

		$('#contact_form').submit(validateForm);
		$('#brochure').bind('change', function(event) {toggleRequired(event,['adres','postcode','plaats'])});
	}
	
	if($('#inschrijven_form').length > 0) {
		initReserveringForm();
	}
	
	if($('#sub_navigation').length > 0) {
		$('#sub_navigation').hover(function(evt){
			var activeitem = $('#sub_navigation li.active');
			if(!$(evt.target.parentNode).hasClass('keyactive')) {
  			  activeitem.removeClass('keyactive');
			}
		},function() {
			var activeitem = $('#sub_navigation li.active');
			activeitem.addClass('keyactive');
		});
		$('#sub_navigation > li').hover(hoverIn, hoverOut);

	}

});

function toggleRequired(elm,fields) {
	$(fields).each(function(i){
		var field = $('#'+fields[i]).parent('dd').parent('dl').parent('li');
		if(elm.target.checked == true) {
			field.addClass('required');
		} else {
			field.removeClass('required');
		}
	});
}

jQuery.fn.extend({
   check: function() {
     return this.each(function() { this.checked = true; });
   },
   uncheck: function() {
     return this.each(function() { this.checked = false; });
   },
  clear: function() {
    return this.each(function() { if($(this).is(':text')) { this.value = ''; }});
  }
});

function validateReserveringForm(event) {

  $('#initialen,#achternaam,#roepnaam,#adres,#nummer,#postcode,#plaats,#telefoon_dag,#email,#bsn,#verzekering,#polisnummer,#geboortedatum_vrouw,#verwachtingsdatum,#kraamzorgorganisatie').each(function() {

  if(this.id == 'kraamzorgorganisatie') {
      if($(this).val() == '' && $('#thuiskraamzorg_ja').is(':checked') == true) {
        event.preventDefault();
        $(this).parent('dd').parent('dl').parent('li').addClass('invalid');
      } else {
        $(this).parent('dd').parent('dl').parent('li').removeClass('invalid');
      }
    } else {
      if(this.value == '') {
        event.preventDefault();
        $(this).parent('dd').parent('dl').parent('li').addClass('invalid');
      } else {
        $(this).parent('dd').parent('dl').parent('li').removeClass('invalid');
      }
    }
  });
}

function initReserveringForm() {
	$('#inschrijven_form').submit(validateReserveringForm);
	$('#eerste_ja').click(function() {$('#hoeveel_li:visible').animate({height:'0',opacity:0,paddingTop:'0px',paddingBottom:'0px',borderBottomWidth:0}, 300); $('#hoeveel_kinderen').clear(); });
	$('#eerste_nee').click(function() {$('#hoeveel_li').animate({height:'24px',opacity:1,paddingTop:'6px',paddingBottom:'6px',borderBottomWidth:1}, 300); });
	
	$('#thuiskraamzorg_nee').click(function() {$('#kraamzorgorganisatie_li:visible,#regelen_li:visible').animate({height:'0',opacity:0,paddingTop:'0px',paddingBottom:'0px',borderBottomWidth:0}, 300);
        $('#kraamzorgorganisatie_ja,#kraamzorgorganisatie_nee,#regelen_ja,#regelen_nee').uncheck() });
	$('#thuiskraamzorg_ja').click(function() {$('#kraamzorgorganisatie_li').animate({height:'120px',opacity:1,paddingTop:'6px',paddingBottom:'6px',borderBottomWidth:1}, 300); });

	
	$('#kraamzorgorganisatie_ja').click(function() {$('#regelen_li:visible').animate({height:'0',opacity:0,paddingTop:'0px',paddingBottom:'0px',borderBottomWidth:0}, 300);$('#regelen_ja,#regelen_nee').uncheck() });
	$('#kraamzorgorganisatie_nee').click(function() {$('#regelen_li').animate({height:'23px',opacity:1,paddingTop:'6px',paddingBottom:'6px',borderBottomWidth:1}, 300); });

}

function showContent(event)
{
	event.preventDefault();
	var str = this.href;
	$(this).parent().addClass('active').siblings('li').removeClass('active');
	
	//str = str.slice(, str.length - 1);
	var contentId = str.slice(str.lastIndexOf('/', str.length-2)+1, str.lastIndexOf('/'));
	$('#'+contentId).show();
	location.href = '/geboortehotel/hotels#'+contentId;
	$('#contentarea').load('/geboortehotel/hotels/inc_'+contentId);
}

function initAccordion()
{
	$('#faq dt a').click(function(event) {
		event.preventDefault();
		var dt = $(this);
		var dd = $(this.parentNode).next();
		var allDd = $('#faq dd');
		for(var i=0;i < allDd.length;i++) {
  		if(allDd[i] == dd[0]) {
				if(!$(allDd[i]).is(':visible')) {
					$(allDd[i]).fadeIn(200);
					$(allDd[i]).parents('li').addClass('active');
					var t = setTimeout(function() {
						$.scrollTo(dt, 500);
						clearTimeout(t);
					}, 200);
				}
			}
		}
	});
	$('#faq dd a.backtotop').click(function(event){
		event.preventDefault();
		var bla = $(this).parent().parent('dd');
		var newScrollTo = bla.height()+10
		$.scrollTo(0, 500, { onAfter: function() {
			bla.fadeOut(200);
			bla.parents('li').removeClass('active');
		}});
	});
	$('#faq dd a.closequestion').click(function(event){
		event.preventDefault();
		var bla = $(this).parent().parent('dd');
		var newScrollTo = bla.height()+10
		$.scrollTo('-='+newScrollTo+'px', 500, { onAfter: function() {
			bla.fadeOut(200);
			bla.parents('li').removeClass('active');
		}});
	});
}

function initContactForm()
{
	jQuery.cssRule("#contact_form label", "display", "none");
	jQuery.cssRule("#contact_form span.validation_message", "display", "none");
	var labels = $('#contact_form label');
	for (var i=0; i < labels.length; i++)
	{
		var text = labels[i].innerHTML;
		var input = $('#'+labels[i].htmlFor)[0];
		$(input).attr('defaultValue', text);
		input.value = text;
		$(input).focus(function() {
			var defaultVal = $('#contact_form label[for='+this.id+']')[0].innerHTML;
			if (this.value == defaultVal) {
				this.value = '';
			} else {
				
			}
		});
		$(input).blur(function() {
			var defaultVal = $('#contact_form label[for='+this.id+']')[0].innerHTML;
			if (this.value == '') {
				this.value = defaultVal;
			}
		});
	}
}

function validateForm (event) {

	var form = $('#contact_form')[0];
	var fields = new Array();
	var errors = new Array();
		
	fields.push($('#initialen')[0]);
	fields.push($('#achternaam')[0]);
	fields.push($('#roepnaam')[0]);
	fields.push($('#email')[0]);
	fields.push($('#bericht')[0]);
	fields.push($('#adres')[0]);
	fields.push($('#nummer')[0]);
	fields.push($('#postcode')[0]);
	fields.push($('#plaats')[0]);

	for (var j=0;j<fields.length;j++) {
		console.log($(fields[j]).parent('dd').parent('dl').parent('li'));
		if($(fields[j]).parent('dd').parent('dl').parent('li').hasClass('required')) {
			if (fields[j].id == 'email') {
				if(!isEmail(fields[j])) {
					errors.push(fields[j]);
				}
			} else {
				if(!notDefault(fields[j])) {
					errors.push(fields[j]);
				}
			}
		}
	}
	if(errors.length > 0) {
		event.preventDefault();
		for(var i=0; i< fields.length; i++) {
			if(inArray(fields[i], errors)) {
				$(fields[i]).parent('dd').parent('dl').parent('li').addClass('invalid');
			} else {
				$(fields[i]).parent('dd').parent('dl').parent('li').removeClass('invalid');
			}
		}
	}

}

function isEmail(elm) {
	var regexp = new RegExp("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", 'gim');
	return regexp.test(elm.value);
}

function notEmpty(str) {
	var regexp = new RegExp("[0-9a-z]", "gim");
	return regexp.test(str);
}

function notDefault(elm) {
	var regexp = new RegExp("[0-9a-z]", "gim");
	if($('#contact_form label[for='+elm.id+']').length > 0) {
		var defaultVal = $('#contact_form label[for='+elm.id+']')[0].innerHTML;
		if(regexp.test(elm.value)) {
			return elm.value != defaultVal;
		}
	} else {
		return elm.value != '';
	}
}

function inArray(needle, haystack) {
	if (typeof haystack == 'object') {
		for (var a=0;a<haystack.length;a++) {
			if (needle == haystack[a]) {
				return true;
			}
		}
		return false;
	}
}

function hoverIn(evt) {
	var li = $(this);
	if(li.hasClass('active')) {
		li.addClass('keyactive')
	} else {
		li.addClass('key')
	}
}

function hoverOut(evt) {
	$(this).removeClass('key').removeClass('keyactive');
}
