$(function(){
	fixFlash();
	newsletterCode();
	
	/*** FIX HTML5 ***/	
	//inputs: placeholder attribute
	if(!Modernizr.input.placeholder){
		$(":input[placeholder]").placeholder();
	}
	
	
	/*** SCHAPENKOP ***/
	$('#plezieropkop-big').mouseout(function(){
		$(this).hide();
		$('#plezieropkop').show();
	});
	$('#plezieropkop').mouseover(function(){
		$(this).hide();
		$('#plezieropkop-big').show();
	});
		
	
	/*** SEARCH  AUTOCOMPLETE ***/
	var suggestCache = {}, lastXhr;
	$('#suggest-loader').show().hide(); //anders draait de loader de eerste keer niet...
	$('#search-input').keyup(function(e){
		var code = (e.keyCode ? e.keyCode : e.which);
		var ignore = [13, 37, 38, 39, 40];		
		if ($(this).val() != "" && $(this).val().length >= 2 && ignore.indexOf(code) == -1)
			$('#suggest-loader').show();
		else
			$('#suggest-loader').hide();
	}).blur(function(){
		$('#suggest-loader').hide();
	}).autocomplete({
		source: function(request, response) {
			var term = request.term;
			if(term in suggestCache){
				response(suggestCache[term]);
				return;
			}			
			lastXhr = $.getJSON('ajax/suggest', request, function(data, status, xhr){
				suggestCache[term] = data;
				if(xhr == lastXhr)
					response(data);
				$('#suggest-loader').hide();
			});
		},
		minLength: 2,
		select: function(event, ui){
			$('#suggest-loader').hide();			
			$('#search-form').submit();			
		},
		appendTo: '#search'
	});
	
	/*** CREATE TAGCLOUD ***/
	//$('ul#tagcloud').tagcloud({type:"list", sizemin:8, sizemax:30, colormin:"FFF", colormax:"FFF"});
	
	/*** COLORBOX ***/	
	$('a.colorbox').colorbox({
		current: "{current} van {total}"
	});
	
	/*** FIX EXTERNAL LINKS ***/
	$('a.external').click(function(evt){
		evt.preventDefault();
		window.open($(this).attr('href'));
	});
	
	/*** CALENDAR ***/
	$('#calendar .day.selected').live('mouseover', function(){
		toggleTooltip({
			content : $('.content', this).html(),
			effect : 'fade'
		});
	}).live('mouseout', function(){
		toggleTooltip({
			show : false
		});
	}).live('click', function(){
		window.location = $(this).attr('rel');
	});
	loadNewCalendars();
	$('#calendar .navigator.prev img').live('click', function(){
		var $curcal = $('#calendar .cal.current');
		var $prevcal = $curcal.prev('.cal');
		var $nextcal = $curcal.next('.cal');
		$prevcal.show().animate({'opacity' : 1, 'left' : 0}).toggleClass('current');
		$curcal.animate({'opacity' : 0, 'left' : 100}, function(){ $(this).hide(); }).toggleClass('current');
		var date = $(this).parent().attr('id');
		$.ajax({
			type: "POST",
			url: "/ajax/set-calendar-date/",
			data: "date=" + date
		});
		loadNewCalendars();
	});
	$('#calendar .navigator.next img').live('click', function(){
		var $curcal = $('#calendar .cal.current');
		var $prevcal = $curcal.prev('.cal');
		var $nextcal = $curcal.next('.cal');
		//var wait = $nextcal.find('.loading').length == 1;
		$curcal.animate({'opacity' : 0, 'left' : -100}, function(){ $(this).hide(); }).toggleClass('current');
		$nextcal.show().animate({'opacity' : 1, 'left' : 0}).toggleClass('current');
		var date = $(this).parent().attr('id');
		$.ajax({
			type: "POST",
			url: "/ajax/set-calendar-date/",
			data: "date=" + date
		});
		loadNewCalendars();
	});
	$('a.disabled').click(function(evt){
		evt.preventDefault();
	});
	$('#blog-list li').click(function(){
		window.location = $(this).find('a').attr('href');
	});
	
	/*** SHOW BACKGROUND ***/
	$('#highlight a, #highlight span').hover(function() {
		$('#center, #search, #body-overlay, #fontsizes').css('visibility', 'hidden');
	}, function(){
		$('#center, #search, #body-overlay, #fontsizes').css('visibility', 'visible');
	});
	
	/*** FONTSCALE ***/	
	if ($.cookie('fontsize')) {
		var f = $.cookie('fontsize');
		if (f != "normal")
			$('#col-right .info').addClass('fontsize-'+f);
	}
	$('#fontsizes-normal').click(function(e){
		e.preventDefault();
		$('#col-right .info').removeClass('fontsize-large fontsize-huge');
		$.cookie('fontsize', 'normal', {  path: '/' });
	});	
	$('#fontsizes-large').click(function(e){
		e.preventDefault();
		$('#col-right .info').removeClass('fontsize-huge').addClass('fontsize-large');
		$.cookie('fontsize', 'large', {  path: '/' });
	});
	$('#fontsizes-huge').click(function(e){
		e.preventDefault();
		$('#col-right .info').removeClass('fontsize-large').addClass('fontsize-huge');
		$.cookie('fontsize', 'huge', {  path: '/' });
	});
});
function fixFlash()
{
	var wmode = "opaque";
	
	$("embed").attr("wmode", wmode);

	var embedTag;
    $("embed").each(function(i) {
        embedTag = $(this).attr("outerHTML");
        if ((embedTag != null) && (embedTag.length > 0)) {
            embedTag = embedTag.replace(/embed /gi, "embed wmode=\"" + wmode + "\" ");
            $(this).attr("outerHTML", embedTag);
        }
        // This "else" was added
        else {
            $(this).wrap("<div></div>");
        }
    });
    
    $("iframe").each(function() {
    	if ($(this).attr("src").indexOf("youtube") != -1) {
    		$(this).attr("src", $(this).attr("src") + "?wmode=Opaque");
    	}    	
    })
}
function toggleTooltip(options)
{
	var settings = {
		show : true,
		content : '',
		effect : ''
	};
	
	$.extend(settings, options);
	
	if (settings.content)
		$('#tooltip-content').html(settings.content);
	var $tooltip = $('#tooltip');
	$tooltip.stop();
	
	if (settings.show) {
		if (settings.effect == 'fade') {
			$tooltip.fadeTo(200, 1);
		} else {
			$tooltip.show();
		}
		
		$(document).bind('mousemove', function(e){
			$tooltip.css('left', e.pageX+15).css('top', e.pageY+5);
		});
	} else {
		if (settings.effect == 'fade') {
			$tooltip.fadeTo(200, 0);
		} else {
			$tooltip.hide();
		}		
		
		$(document).unbind('mousemove');
	}	
}

function loadNewCalendars()
{
	var $curcal = $('#calendar .cal.current');
	
	var loading = 'bezig met laden...';
	
	//maak vorige maand aan
	if($curcal.prev('.cal').length == 0){
		var date = $curcal.find('.navigator.prev').attr('id');
		if(date != undefined && date != ''){
			var $prevcal = $('<div class="cal"><span class="loading">'+loading+'</span></div>').insertBefore($curcal);
			$prevcal.fadeTo(0, 0).css('left', -100).hide();
			$.ajax({
				type: "POST",
				url: "/ajax/get-calendar/",
				data: "date=" + date + "&useSession=false",
				success : function(msg) {
					$prevcal.html(msg);
					loadNewCalendars();
				}
			});
		}
	}
	
	//maak volgende maand aan
	if($curcal.next('.cal').length == 0){
		var date = $curcal.find('.navigator.next').attr('id');
		if(date != undefined && date != ''){
			var $nextcal = $('<div class="cal"><span class="loading">'+loading+'</span></div>').insertAfter($curcal);
			$nextcal.fadeTo(0, 0).css('left', 100).hide();
			$.ajax({
				type: "POST",
				url: "/ajax/get-calendar/",
				data: "date=" + date + "&useSession=false",
				success : function(msg) {			
					$nextcal.html(msg);
					loadNewCalendars();
				}
			});
		}
	}
}


var validate = true;
function validate_form(form) {
	
	//functie die automatisch een formulier valideert via ajax, je moet hier niets veranderen
	
	$("#" + form + "_submit").hide();
	var validate = true;
	
	if (form == "form_reserve") {
		form = "form_abo";
		var r1Obj = $("#form_abo_r1_id");
		var r2Obj = $("#form_abo_r2_id");
		if (r1Obj.val() == r2Obj.val()) {
			r1Obj.attr("class", "error");
			r2Obj.attr("class", "error");
			validate = false;
		}
	}

	if (validate) {
		var params = $("#" + form).serialize();
		params += "&form_id=" + form;
		params += "&id=" + id;

		if (params.indexOf("form_abo_voornaam1") == -1) {
			var aantal = $("#form_abo_aantal");
			
			for (var i = 0; i < aantal; i++) {
				params += "&form_abo_voornaam" + (i+1) + "=" + $("form_abo_voornaam" + (i+1));
			}
		}
		
		
		$("#submit_form").attr("disabled", true);
		$("#submit_form").hide();
		
		
		$.ajax( {
			type : "POST",
			url : "/ajax/validate-form/",
			data : params,
			success : function(msg) {
				if (form != "form_event_surfer") {
					$("#" + form + "_submit").show();
				} else {
					$("#submit_form").show();
				}
				
				validate = true;
				
				$("#submit_form").removeAttr("disabled");
			
				msg = eval(msg);
	
				$("input, textarea, select").each( function() {
					if (this.id.indexOf(form) != -1) {
			
						$(this).removeClass("error");
						$(this).removeClass("error_text");
						$(this).addClass($(this).attr("type"));
					}
				});
	
				if (msg) {
					var goNext = true;
					

					if (form == "form_newsletter") {
						if (!msg[0]) {
							if ($("#form_newsletter_email").val() != $("#form_newsletter_email2").val()) {
								goNext = false;
								$("#form_newsletter_email").focus();
								$("#form_newsletter_email").select();
								$("#form_newsletter_email").attr("class", "error");
								$("#form_newsletter_email2").attr("class", "error");
								$("#submit_form").show();
							}	
						}
					}
					
					
					if (form == "form_abo") {
						goNext = false;						
					}
					
					if (msg[0]) {
						
						$("#submit_form").show();
					
						for ( var i = 0; i < msg[1].length; i++) {
							var obj = $("#" + msg[1][i]);
							
							if (!obj.attr("id")) {
								$('input').each( function() {
									if (this.id.indexOf(msg[1][i])!=-1) {	
										
										obj = $("#" + this.id);
									}
								});
								
							}
								
							if (i == 0) {
								obj.focus();
								obj.select();
							}
							
							var error = "error";
							var type = obj.attr("type");
							
							if (type == "text" || type == "password") {
								error += "_" + type;
							}
	
							if (obj.attr("type") == "checkbox") {
								obj.parent().attr("class", error);			
							}
							obj.attr("class", error);
						}
					} else if (goNext) {
						if (form == "form_contact") {
							contactSubmit();
						}else if (form == "form_person") {
							repetitionSubmit();
						} else if (form == "form_friend") {
							$('#form_friend').replaceWith("<p>Bedankt,<br />Je bericht werd verzonden.</p>");
						} else if (form == "form_school") {
							$("#form_school").replaceWith($('#school-thank-you').html());
						}
					} else {
						$("div.form-input").hide();
						$("div.form-thankyou").show();
					}
		
				}
			}
	});
	}
	
	return false;
}

function newsletterCode()
{
	$("input#newsletter-input").click(function(){
		$(this).val("");	
	});

	$("#form-newsletter input").click(function() {
		$(this).val("");
	});
	if ($("input#newsletter-email-input").attr("id")) {		
		if (newsletter) {
			newsletterSuccess();
		} else {
			$("#advancedNewsletter").hide();
			
			$("div#newsletter input").each(function(){
				$(this).val($(this).attr("rel"));
				$(this).attr("name", $(this).attr("id"));
				$(this).click(function() {
					if (tweening) {
						timing = true;
						$("#advancedNewsletter").show("slow", function() {timing = false;});
					} else {
						$("#advancedNewsletter").show();
					}
				});
				
				$(this).focus(function() {
					if (tweening) {
						timing = true;
						$("#advancedNewsletter").show("slow", function() {timing = false;});
					} else {
						$("#advancedNewsletter").show();
					}
				});
				
				$(this).keypress(function(e) {
					if ($(this).val() == $(this).attr("rel")) {
						$(this).val("");
					}
					removeFieldError(this.id);
					
					if (e.which == 13) {
						newsletterIt();	
					}
				});
			});
		}
	}
	
	$("#form_newsletter_submit").click(function(evt){
		evt.preventDefault();
		newsletterIt();
	});
	
}

function checkField(field)
{
	var val = $("input#" + field).val();
	
	if (val && val != $("input#" + field).attr("rel")) {
		return val;
	} else {
		setFieldError(field);
		return false;
	}
}

function setFieldError(field)
{
	$("input#" + field).removeClass("normal");
	$("input#" + field).addClass("error");
	$("input#" + field).focus();
}

function removeFieldError(field)
{
	$("input#" + field).removeClass("error");
	$("input#" + field).addClass("normal");
}

function isEmail(str) {

	if (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;					
}


function newsletterSuccess()
{
	$("#newsletter-form").html("<p>" + $("#newsletter-form").attr("rel") + "</p>");	
}

function newsletterIt()
{
	$("div#newsletter input").each(function(){
		removeFieldError(this.id);
	});
	
	var params = $("#form-newsletter").serialize();

	var email = checkField("newsletter-email-input");
	var emailRepeat = checkField("newsletter-email-repeat-input");
	var firstname = checkField("newsletter-firstname-input");
	var name = checkField("newsletter-name-input");
	
	if (email != emailRepeat) {
		setFieldError("newsletter-email-input");
		setFieldError("newsletter-email-repeat-input");
	}

	if (!isEmail(email)) {
		setFieldError("newsletter-email-input");
	}
	
	if (!isEmail(emailRepeat)) {
		setFieldError("newsletter-email-repeat-input");
	}
	
	if (isEmail(email) && firstname && name && email && (email == emailRepeat)) {
		$("#newsletter-arrow").hide();
		$.ajax({
		   type: "POST",
		   url: "/ajax/validate-newsletter/",
		   data: params,
		   success: function(msg){
				newsletterSuccess();
		   }
		 });
		
	}
}
function formCode(form)
{
	if (form == "form_newsletter") {
		$("#form_newsletter_name").hide();
		$("#form_newsletter_email").hide();
		$("#form_newsletter_submit").hide();
		
		$("#form_newsletter_firstname").click(function(){
			$("#form_newsletter_name").show();
			$("#form_newsletter_email").show();
			$("#form_newsletter_submit").show();
		});
		
		$("#form_newsletter input").click(function(){
			$(this).val("");
		})
		
		$("#" + form + "_submit").click(function(){
			var firstname = $("#form_newsletter_firstname").val();
			firstname = firstname.split("voornaam").join("");
			$("#form_newsletter_firstname").val(firstname);
		
			var name = $("#form_newsletter_name").val();
			name = name.split("naam").join("");
			$("#form_newsletter_name").val(name);
			
			var email = $("#form_newsletter_email").val();
			email = email.split("email").join("");
			$("#form_newsletter_email").val(email);
			
			validate_form(form);
			return false;
		});
	} else {
		$("#" + form + "_submit").click(function(){
			validate_form(form)
			return false;
		})
	}
}
