document.createElement('header');
document.createElement('footer');
document.createElement('nav');
document.createElement('article');
document.createElement('section');
document.createElement('aside');

$(document).ready(function(){
						   
	// dropdownmenu
	$('.uitklaplink').click(function(){
		
		if($(this).hasClass('active')) {
			
			$(this).removeClass('active');	
			
		} else {
			
			$('menu li a').removeClass('active');	
			$(this).addClass('active');
			
		}
		
		$('ul.submenu').slideUp('fast');
		
		if($(this).parent().find('ul.submenu').css('display')=='none') {
			
			$(this).parent().find('ul.submenu').slideDown('fast');
			
		} else {
			
			$(this).parent().find('ul.submenu').slideUp('fast');
		}
		
	});								   
						   
	$(document).pngFix( );
	
	// marge / padding reset

	$('.uitgelicht ul li a:first').addClass('nomarge');
	
	///////////////////////////////////////////////////


	if ( $('.js_twitterfeed') )
	{
		$.ajax({
			url: "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=storionifest&count=1&include_rts=true",
			success: function(data) {
				data[0].text = data[0].text.replace(/(http:\/\/\S+)/g, "<a target='_blank' href='$1'>$1</a>");
				var time = data[0].created_at;
				$('#tweet1').find('h2').after("<p>"+data[0].text+"<span>"+relative_time(time)+"</span></p>");
			},
			dataType: 'jsonp'
		});
		$.ajax({
			url: "http://search.twitter.com/search.json?q=storionifestival OR storioni&rpp=1",
			success: function(data) {
				data.results[0].text = data.results[0].text.replace(/(http:\/\/\S+)/g, "<a target='_blank' href='$1'>$1</a>");
				var year = new Date();
				var time = data.results[0].created_at+' '+year.getFullYear();
				$('#tweet2').find('h2').after("<p>"+data.results[0].text+"<span>"+relative_time(time)+"</span></p>");
			},
			dataType: 'jsonp'
		});
	}


	// home slider (sudo slider)
	$(this).find(".js_homeslider").sudoSlider({
        auto: true,
		pause: '5000',
		prevNext: false,
		speed:'400',
		clickableAni: true,
		updateBefore: true
    });

	if ($('#paginanummer').html())
	{
		paginanummer = $('#paginanummer').val;
	}
	
	$('input[name=nieuwsbrief]').focus(function(){
		if($(this).val() == 'E-mailadres')
		{
			$(this).val('');
		}
		if($(this).val() == 'E-mailaddress')
		{
			$(this).val('');
		}
	});
	$('input[name=nieuwsbrief]').blur(function(){
		if($(this).val() == '')
		{
			$(this).val('E-mailadres');
		}
		if($(this).val() == '')
		{
			$(this).val('E-mailaddress');
		}
	});	

	// links in "_blank" i.p.v. via HTML i.v.m. valid XHTML (vereist voor cms)
	$('.blankwindow').attr('target','_blank');

	// flash inladen
	// als een div aangemaakt wordt met als class "flash",
	// en als inhoud het absolute pad naar de flash en de variable
	// wordt deze automatisch ingeladen
	$('.flash').each(function(){
		slideshowvars = $(this).find('.flashlink').html();
		slideshowheight = $(this).css('height');
		slideshowwidth = $(this).css('width');
		$(this).html("");
		$(this).flash({
	    	src: slideshowvars,
	    	width: slideshowwidth,
	    	height: slideshowheight,
			wmode: 'transparent'
		});
	});

	//## colorbox ##

	/**
	 *	-- Gebruik --
	 *	Geef een anchor de class .colorbox en de href de locatie van de afbeelding
	 *	Voor een slideshow:
	 *	Geef meerdere anchor's met .colorbox dezelfde rel="" waarde
	 *	Voorbeeld slideshow:
	 *	<a class="colorbox" rel="testblaat" href="/public/img/video2.jpg">klik</a>
     *	<a class="colorbox" rel="testblaat" href="/public/img/banner.jpg">klik</a>
	 */
	//set
	$('.colorbox').colorbox({
		transition:'elastic'
	});

	/**
	* Html tonen in colorbox:
	* <a class="htmlcolorbox" rel="idvanjehtmldiv">Klik</a>
	*/	
	$('.htmlcolorbox').click(function(){
		var targetid = $(this).attr('rel');
		if (typeof targetid == 'undefined' || targetid == '') return ;
		
		$(this).colorbox({
			open: true,
			inline:true,
			title:false,
			transition:'none',
			href:"#" + targetid
		});
	});

    /**
    * Youtube movie tonen in colorbox:
     *	Voor een slideshow:
     *	Geef meerdere anchor's met .colorbox dezelfde rel="" waarde
     *	Voorbeeld slideshow:
    * <a class="js_youtubecolorbox" rel="testblaat" href="http://www.youtube.com/v/[movie-id]">Klik</a>
    */
    $('.js_youtubecolorbox').colorbox({
        iframe:true,
        innerWidth: 640,
        innerHeight:505,
        transition:'elastic'
    });

	$('.submitlink').click(function(){
        $(this).parents('form:first').trigger('submit');
		return false;
	});

	//AJAX FORMS automatisch
	$('form.ajaxform').each(function(){
		var form = $(this);
		$(this).ajaxForm({
			dataType: 'json',
			beforeSubmit: function(){
				form.parent().find('.errormelding').remove();

				//vereiste velden
				var ok = true;
				form.find('.required').each(function(){
					if ($(this).val().replace(' ', '') == '' || $(this).hasClass('hint')) //leeg of bevat nog de hint
					{
						ok = false;
						$(this).addClass('formerror');
					}
					else
						$(this).removeClass('formerror');
				});
				form.find('.required.email').each(function(){
					var regex = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
					if (!regex.test($(this).val()))
					{
						ok = false;
						$(this).addClass('formerror');
					}
				});

				if (ok)
				{
					//de hints niet meesturen
					form.find('input.hint').each(function(){
						$(this).val('');
					});
				}
				else
					return false;
			},
			success: function(response){
				if (response.success)
				{
					form.html('<p>'+response.melding+'</p>');
				}
				else if (response.melding){
					form.before($('<p class="errormelding">'+response.melding+'</p>'));
				}
			}
		})
	})
});

// Return value rounded to two decimal places
function display_value( param )
{
	stringvalue     = param.toString();
  	stringvalue     = stringvalue.replace(/\,/, ".");
	value           = round_decimals( stringvalue, 2);
	stringvalue     = value.toString();
	stringvalue     = stringvalue.replace(/\./, ",");
	return stringvalue;
}


function round_decimals(original_number, decimals) {
    var result1 = original_number * Math.pow(10, decimals)
    var result2 = Math.round(result1)
    var result3 = result2 / Math.pow(10, decimals)
    return pad_with_zeros(result3, decimals)
}


function pad_with_zeros(rounded_value, decimal_places) {

    // Convert the number to a string
    var value_string = rounded_value.toString()

    // Locate the decimal point
    var decimal_location = value_string.indexOf(".")

    // Is there a decimal point?
    if (decimal_location == -1) {

        // If no, then all decimal places will be padded with 0s
        decimal_part_length = 0

        // If decimal_places is greater than zero, tack on a decimal point
        value_string += decimal_places > 0 ? "." : ""
    }
    else {

        // If yes, then only the extra decimal places will be padded with 0s
        decimal_part_length = value_string.length - decimal_location - 1
    }

    // Calculate the number of decimal places that need to be padded with 0s
    var pad_total = decimal_places - decimal_part_length

    if (pad_total > 0) {

        // Pad the string with 0s
        for (var counter = 1; counter <= pad_total; counter++)
            value_string += "0"
        }
    return value_string
}

// Finds position of first occurrence of a string within another
function strpos (haystack, needle, offset) {
    var i = (haystack+'').indexOf(needle, (offset ? offset : 0));
    return i === -1 ? false : i;
}

function relative_time(time_value) {
	var values = time_value.split(" ");
	time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
	var parsed_date = Date.parse(time_value.replace('+0000', ''));
	var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
	var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
	delta = delta + (relative_to.getTimezoneOffset() * 60);
	if (delta < 60) {
		return 'minder dan 1 minuut geleden';
	} else if(delta < 120) {
		return 'ongeveer 1 minuut geleden';
	} else if(delta < (60*60)) {
		return 'ongeveer ' + (parseInt(delta / 60)).toString() + ' minuten geleden';
	} else if(delta < (120*60)) {
		return 'ongeveer 1 uur geleden';
	} else if(delta < (24*60*60)) {
		return 'ongeveer ' + (parseInt(delta / 3600)).toString() + ' uur geleden';
	} else if(delta < (48*60*60)) {
		return '1 dag geleden';
	} else {
		return (parseInt(delta / 86400)).toString() + ' dagen geleden';
	}
}
