var current_language = 'nl';
$(document).ready(function(){
	current_language = $('meta[http-equiv="Content-Language"]').attr('content');

	if ($('#paginanummer').html())
	{
		paginanummer = $('#paginanummer').val;
	}

	// 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();
		//strip HTML comment from flash vars
		slideshowvars = slideshowvars.replace(/^<!--/, "");
		slideshowvars = slideshowvars.replace(/-->$/, "");
		slideshowheight = $(this).css('height');
		slideshowwidth = $(this).css('width');
		$(this).html("");
		$(this).flash({
	    	src: slideshowvars,
	    	width: slideshowwidth,
	    	height: slideshowheight,
			wmode: 'transparent'
		});
	});

	// png fix
    $(document).pngFix();


	$('.videoplayer').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,
			allowFullScreen: 'true'
		});
	});



	// thumb photoslider (detail)
	var thumbBreedte = 0;
	$('.js_photosliderlink').each(function(){
		thumbBreedte += $(this).width()+2;
	});

	var thumbul = $('.js_detailthumbslider ul');
	var maxBreedte = 188;
	var maxMargin = 0-thumbBreedte+maxBreedte+2;
	var minimalePositie = 0-thumbBreedte+(maxBreedte*2);

	thumbul.width(thumbBreedte);

	$('.js_prev').fadeTo('fast',0.5);
	$('.js_prev').addClass('nohover');

	if(maxBreedte > thumbBreedte){
		$('.js_next').fadeTo('fast',0.5);
		$('.js_next').addClass('nohover');
	} else {
		$(".js_next").click(function(){
			$('.js_prev').fadeTo('fast',1);
			$('.js_prev').removeClass('nohover');
			if(minimalePositie < thumbul.css('marginLeft').replace('px','')){
				thumbul.animate({marginLeft:'-='+maxBreedte},500);
			} else {
				thumbul.animate({marginLeft:maxMargin},500);
				$('.js_next').fadeTo('fast',0.5);
				$('.js_next').addClass('nohover');
			}
		});
		$(".js_prev").click(function(){
			$('.js_next').fadeTo('fast',1);
			$('.js_next').removeClass('nohover');
			if(0-maxBreedte > thumbul.css('marginLeft').replace('px','')){
				thumbul.animate({marginLeft:'+='+maxBreedte},500);
			} else {
				thumbul.animate({marginLeft:'0'},500);
				$('.js_prev').fadeTo('fast',0.5);
				$('.js_prev').addClass('nohover');
			}
		});
	}
	$('.js_photosliderlink').click(function(){
		clickedThumb = $(this).attr('rel');
		$('.js_detailfoto').parent('li').addClass('hide');
		$('.js_detailfoto.foto'+clickedThumb).parent('li').removeClass('hide');
	});

	//## colorbox ##
	if (typeof $().colorbox == 'function')
	{

		/**
		 *	-- 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'
		});

		$('.js_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,
				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="youtubecolorbox" rel="testblaat" href="http://www.youtube.com/v/[movie-id]">Klik</a>
		*/
		$('.youtubecolorbox').colorbox({
			iframe:true,
			innerWidth: 640,
			innerHeight:505,
			transition:'elastic'
		});
	}

	// links in "_blank" i.p.v. via HTML i.v.m. valid XHTML
	$('.blankwindow').attr('target','_blank');

	//field hints
	$(".hintfield").each(function(i) {
        var beginStyle = $(this).attr("style");
		$(this).addClass("hint");
		$(this).val($(this).attr("title"));

        $(this).bind("focus", function(e) {
            if ($(this).val() == $(this).attr("title")) {
                $(this).val("");
				$(this).removeClass("hint");
            }
        });
        $(this).bind("blur", function(e) {
            if ($(this).val() == "") {
				$(this).addClass("hint");
				$(this).val($(this).attr("title"));
            } else {
				$(this).css("border-color", "");
				$(this).removeClass("hint");
			}
        });
    });

	// teksten in/uitklappen
	$('.uitklaplink').click(function () {
		uitklappen($(this));
	});

	$('.besteltraject').find('.uitklapdetail:first').slideDown('slow');

    // Standaard klik op volgende stap
    $('.volgendestap').click(function()	{
    	uitklappen($(this).parents('.uitklapblok:first').next().find('.uitklaplink'));
    });

 // Standaard klik op volgende stap
    $('.vorigestap').click(function()	{
    	uitklappen($(this).parents('.uitklapblok:first').prev().find('.uitklaplink'));
    });


	//submit form link
	$('.submitform').click(function(){
		$(this).parents('form:first').submit();
		return false;
	})

	//AJAX FORMS automatisch
	if (typeof $().ajaxForm == 'function')
	{
		$('form.ajaxform').each(function(){
			var form = $(this);
			$(this).ajaxForm({
				dataType: 'json',
				beforeSerialize: function(){
					form.find('.hint').val('');
				},
				beforeSubmit: function(){
					form.parent().find('.errormelding').remove();

					//vereiste velden
					form.find('.required').each(function(){
						if ($(this).val().replace(' ', '') == '' || $(this).hasClass('hint')) //leeg of bevat nog de hint
						{
							return 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()))
						{
							return false;
							$(this).addClass('formerror');
						}
					});
				},
				success: function(response){
					if (response.success)
					{
						form.html('<p>'+response.melding+'</p>');
					}
					else if (response.melding){
						form.before($('<p class="errormelding">'+response.melding+'</p>'));
					}
					else if (response.errors){
						form.before($('<p class="errormelding">'+response.errors+'</p>'));
					}
					form.find('.hint').trigger('blur');
				}
			})
		})
	}

	$('#select_brand').change(select_brand);
	$('#select_type').change(select_type);

	$('#select_dealer_brand').change(select_dealer_brand);
	$('#select_dealer_type').change(select_dealer_type);


	$('.uitklapblok_productspecificaties .uitklaplink').each(function(){
		uitklappen($(this));
	})

	$('.gegevensinvoer').hide();

	$('#bestel_knop').click(function(){
		var res = '';
		res += controleerStap( 1 );
		res += controleerStap( 2 );
		res += controleerStap( 3 );
		res += controleerStap( 4 );

		if ( res == '' )
			$(this).parents('form:first').submit();
	});

});

function uitklappen(obj)
{
	var obj_id = obj.parents('.uitklapblok').attr('id');

	var res = '';
	switch(obj_id)
	{
		case 'stap2':
			res = controleerStap( 1 );
			break;
		case 'stap3':
			res = controleerStap( 2 );
			if ( res == '' )
				selecteedGegevensinvoer();
			break;
		case 'stap4':
			res = controleerStap( 3 );

			$('#overzicht_titel').html( $('#product_titel').html() );
			$('#overzicht_aantal').html( $('input[name="product_aantal"]').val() );
			$('#overzicht_bezorgwijze').html( ucfirst($('input[name="oplevering"]:checked').val()) );
			$('#overzicht_prijs').html( '&euro; ' + number_format($('#prijs_ps').val()*$('input[name="product_aantal"]').val(), 2, ',', '.') )


			break;
	}

	if ( res != '' )
	{
		alert( res )
		return;
	}

	var parent_obj = obj.parents('.uitklapblok').find('.uitklapdetail');

	obj.parents('.uitklapblokken').find('.uitklapdetail').slideUp('fast');
	obj.parents('.uitklapblokken').find('.uitklapblok').removeClass('active');
	obj.parents('.uitklapblokken').find('.uitklaplink').removeClass('activearrow');
	obj.removeClass('activearrow');

	if (parent_obj.css('display')=='none')
	{
		parent_obj.slideDown('fast');
		obj.addClass('activearrow');
		obj.parents('.uitklapblok').addClass('active');
	}
}

function controleerStap( stap )
{
	var errors = '';
	switch( stap )
	{
		case 1:
			if ( isNaN(parseInt($('input[name="product_aantal"]').val())) || parseInt($('input[name="product_aantal"]').val()) < 1 )
				errors += 'U heeft geen aantal ingevuld.'+"\n";
			break;
		case 2:
			errors += controleerStap( 1 );
			if ( $('input[name="oplevering"]:checked').val() == undefined || $('input[name="oplevering"]:checked').val() == '' )
				errors += 'U heeft geen oplevermanier geselecteerd.'+"\n";
			break;
		case 3:
			errors += controleerStap( 1 );
			errors += controleerStap( 2 );
			if ( $('input[name="oplevering"]:checked').val() == 'opsturen' )
			{
				if ( $('input[name="opsturen_voorletters"]').val() == '' ) errors += 'U heeft geen voorletters ingevuld.'+"\n";
				if ( $('input[name="opsturen_achternaam"]').val() == '' ) errors += 'U heeft geen achternaam ingevuld.'+"\n";
				if ( $('input[name="opsturen_straat"]').val() == '' ) errors += 'U heeft geen straatnaam ingevuld.'+"\n";
				if ( $('input[name="opsturen_huisnummer"]').val() == '' ) errors += 'U heeft geen huisnummer ingevuld.'+"\n";
				if ( $('input[name="opsturen_postcode"]').val() == '' ) errors += 'U heeft geen postcode ingevuld.'+"\n";
				if ( $('input[name="opsturen_woonplaats"]').val() == '' ) errors += 'U heeft geen woonplaats ingevuld.'+"\n";
				if ( $('input[name="opsturen_land"]').val() == '' ) errors += 'U heeft geen land ingevuld.'+"\n";
				if ( $('input[name="opsturen_telefoon"]').val() == '' ) errors += 'U heeft geen telefoonnummer ingevuld.'+"\n";
				if ( $('input[name="opsturen_email"]').val() == '' ) errors += 'U heeft geen emailadres ingevuld.'+"\n";
			}
			if ( $('input[name="oplevering"]:checked').val() == 'afhalen' )
			{
				if ( $('select[name="afhalen_dealer"]').val() == '' ) errors += 'U heeft geen dealer geselecteerd.'+"\n";
				if ( $('input[name="afhalen_email"]').val() == '' ) errors += 'U heeft geen emailadres ingevuld.'+"\n";
			}
			if ( $('input[name="oplevering"]:checked').val() == 'afspraak' )
			{
				if ( $('input[name="afspraak_naam"]').val() == '' ) errors += 'U heeft geen naam ingevuld.'+"\n";
				if ( $('input[name="afspraak_tel"]').val() == '') errors += 'U heeft geen telefoonnummeringevuld ingevuld.'+"\n";
				if ( $('input[name="afspraak_email"]').val() == '') errors += 'U heeft geen emailadres ingevuld ingevuld.'+"\n";
			}
			break;
	}
	return errors;
}

function selecteedGegevensinvoer()
{
	$('.gegevensinvoer').hide();
	if ( $('input[name="oplevering"]:checked').val() == 'opsturen' )
	{
		$('#gegevens_opsturen').show();
	}
	if ( $('input[name="oplevering"]:checked').val() == 'afhalen' )
	{
		$('#gegevens_afhalen').show();
	}
	if ( $('input[name="oplevering"]:checked').val() == 'afspraak' )
	{
		$('#gegevens_afspraak').show();
	}
}

function select_brand()
{
	var brand = $('#select_brand').val();
	if (brand != '')
	{
		document.location = '/'+current_language+'/product/'+brand;
	}
}

function select_type()
{
	var brand = $('#select_brand').val();
	var type = $('#select_type').val();
	if (brand != '' && type != '')
	{
		document.location = '/'+current_language+'/product/'+brand+'/'+type;
	}
}

function select_dealer_brand()
{
	var brand = $('#select_dealer_brand').val();
	if (brand != '')
	{
		document.location = '/'+current_language+'/dealer/test/'+brand;
	}
}

function select_dealer_type()
{
	var brand = $('#select_dealer_brand').val();
	var type = $('#select_dealer_type').val();
	if (brand != '' && type != '')
	{
		document.location = '/'+current_language+'/dealer/test/'+brand+'/'+type;
	}
}

/**
 * slide an element up without causing blinking flash content
 */
function slideUp(object, speed, slideTime)
{
    if (parseInt(speed) == NaN) return false;
    if (object.jquery == undefined) object = $(object);
	if (object.height() <= 0) return true;
    object.css('overflow', 'hidden');
    var ppf = (object.height() / speed * 20);
    var orgh = object.height();
    var timeout = setInterval(function(){
        object.height(object.height() - ppf);
        if (object.height() <= 0){
            object.hide();
            object.height(orgh);
            clearInterval(timeout);
        }
    }, 10);
    return true;
}

/**
 * slide an element down without causing blinking flash content
 */
function slideDown(object, speed)
{
    if (parseInt(speed) == NaN) return false;
    if (object.jquery == undefined) object = $(object);
    object.css('overflow', 'hidden');
    var ppf = (object.height() / speed * 20);
    var orgh = object.height();
    object.height(0);
    object.show();
    var timeout = setInterval(function(){
        object.height(object.height() + ppf);
        if (object.height() >= orgh){
            object.height(orgh);
            clearInterval(timeout);
        }
    }, 10);
    return true;
}


function number_format(number, decimals, dec_point, thousands_sep) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +      input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +   improved by: davook
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Jay Klehr
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Theriault
    // +      input by: Amirouche
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *    example 10: number_format('1.20', 2);
    // *    returns 10: '1.20'
    // *    example 11: number_format('1.20', 4);
    // *    returns 11: '1.2000'
    // *    example 12: number_format('1.2000', 3);
    // *    returns 12: '1.200'
    // *    example 13: number_format('1 000,50', 2, '.', ' ');
    // *    returns 13: '100 050.00'
    number = (number+'').replace(',', '').replace(' ', '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

function ucfirst (str) {
    // Makes a string's first character uppercase
    //
    // version: 1008.1718
    // discuss at: http://phpjs.org/functions/ucfirst    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: ucfirst('kevin van zonneveld');
    // *     returns 1: 'Kevin van zonneveld'    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}
