var pageTracker;
var analytics_code = "UA-15579625-1";

var hndl = window.setTimeout("StartTracking()", 100);

// zaalflash laden
var init_flashzaal = function(){
	if ($(this).data('slideshowvars') != undefined)
		slideshowvars = $(this).data('slideshowvars');
	else
	{
		slideshowvars = $(this).html();
		$(this).data('slideshowvars', slideshowvars);
	}
	$(this).html("");
	$(this).flash({
		src: slideshowvars,
		width: 950,
		height: 600,
		wmode: 'transparent',
		id: 'swf_stoelkeuze',
		name: 'swf_stoelkeuze',
		swliveconnect: true
	});
};

$(document).ready(function(){	

//	window.alert($('.changelogo a').length);

	// De kring functies
	var logoClasses = $('.hoverlogo').attr('class');
	$('.changelogo a').hover(
		function(){ //hover
			$('.hoverlogo').attr('src', '/framework/public/img/' + $(this).attr('rel') + '.gif');
			$('.hoverlogo').attr('class', logoClasses);
			$('.hoverlogo').addClass($(this).attr('class'));
		},
		function () { //hover-out
			var current = $('.changelogo a.current');
			$('.hoverlogo').attr('src', '/framework/public/img/' + current.attr('rel') + '.gif');
			$('.hoverlogo').removeClass($(this).attr('class'));
			$('.hoverlogo').addClass(current.attr('class'));
		}
	);

    if ($('#seriepopup').length > 0)
    {
       $().colorbox({
        open: true,
        href:"#seriepopup",
        inline:true
       });
    }

    $('.flashzaal').each(init_flashzaal);

	// Klapblokken bestelpagina
	$('.uitklaplink').click( function() { // subs in/uitklappen

        if ($(this).parents('.uitklapblokken:first').find('.uitklapblok.confirmclose .uitklapdetail:visible').length > 0)
        {
            var selected_show = $('select.alternative_show').attr('value');
            
            if( $('#bestel_show_id').attr('value') != selected_show )
            {
                if( confirm('Weet u zeker dat u verder wilt gaan? Uw huidige bestelling komt te vervallen.') )
                {
                    $(location).attr( 'href', selected_show );
                    return false;
                }
                else
                {
                    // Waarde van selectbox terugzetten op oude value
                    $('select.alternative_show').val( $('#bestel_show_id').attr('value') );
                }
            }
        }

		var obj = $(this).parents('.uitklapblok:first').find('.uitklapdetail:first');

		if (!$(this).hasClass('keepothers')) //andere blokken sluiten
		{
			$(this).parents('.uitklapblokken').find('.uitklapdetail').each(function(){
				if (!$(this).hasClass('dontclose')) //dit blok niet altijd open houden
				{
					$(this).slideUp();
					$(this).find('.uitklaplink').removeClass('open');
				}
			})
		}

		//overal active verwijderen
		$(this).parents('.uitklapblokken').find('.uitklaplink').removeClass('active');

		if (obj.css('display')=='none') //geklikt item openen
		{
			obj.slideDown();
			$(this).addClass('active');
			$(this).addClass('open');
		}
		else //geklikt item sluiten
		{
			obj.slideUp();
			$(this).removeClass('open');
		}
	});


    // Switch betaalmethode pagina
	$('#bethaalmethode_form input[name="betaalmethode"]').click(function(){

		if ($('#bethaalmethode_form input[value="creditcard"]').attr('checked'))
			$('#providers_creditcard').show();
		else
			$('#providers_creditcard').hide();

		if ($('#bethaalmethode_form input[value="ideal"]').attr('checked'))
			$('#banken_ideal').show();
		else
			$('#banken_ideal').hide();

		if ($('#bethaalmethode_form input[value="termijn"]').attr('checked'))
			$('#banken_termijn').show();
		else
			$('#banken_termijn').hide();
	});

    // Geef een waarschuwing bij het verwijderen van een reservering uit de winkelmand
	$(".winkelmand_delete").click(function() { 
        if (!confirm('Weet u zeker dat u deze boeking wilt verwijderen?'))
        {
            return false;
        }
        else
        {
            $(this).parents('form:first').trigger('submit');
        }
    });

	// controle kortingscode
	$("#js_winkelmand_kortingscode").click(function() {
        check_kortingscode( );
    });
    
    // Voer controles uit als men van de winkelmand naar de betaalstap gaat
    // Controleert of de stoelkeuze verlopen is, geeft alerts als dit niet het geval is
    // en bepaalt eventueel zelf nieuwe stoelen
	$(".winkelmand_bevestigen").click(function() {
        check_reservering_stoelen( 'false' );
    });
    
    // Voer controles uit als men van de winkelmand naar de betaalstap gaat
    // Controleert of de stoelkeuze verlopen is, geeft alerts als dit niet het geval is
    // en bepaal eventueel zelf nieuwe stoelen
	$(".js_betaalmethode_bevestigen").click(function() {
        check_betaling_reservering_stoelen( $(this) );
    });

    // Standaard klik op volgende stap
    $('.volgendestap').click(function()	{
        $(this).parents('.uitklapblok:first').next().find('.uitklaplink').trigger('click');
    });
	
	//eerste stap uitklappen
	$('#menuleft .uitklaplink:first').trigger('click');

    // Afhandeling selectie best seat
    $('.bestel_best_seat').click(function() {
        verwerkBestSeat( );
    });

    // Wijziging op het aantal tickets, toon selectievelden voor het selecteren van de prijscode
    $('#aantal_tickets').change( function() { updateShowPrijscodes( $(this) ); return false; });

    // Wijziging op het aantal arrangementen, toon selectievelden voor het selecteren van de prijscode
    $('.aantal_arrangement').change( function() { updateArrangementPrijscodes( $(this) ); return false; });

    // Wijziging op de rangkeuze: haal prijscodes op
    $('#rangkeuze_rang_id').change( function() {
       var rang_id = $('#rangkeuze_rang_id').attr( 'value' );
       var show_id = $('#bestel_show_id').attr( 'value' );

       $.getJSON('/framework/public/ajax/prijscodes.php?show_id='+show_id+'&rang_id='+rang_id, function( data ) {
           var select_options = '';
           var hidden_options = '';

           $.each( data['results'], function( index, pobject ) {
               select_options += '<option value="'+pobject.id+'">'+pobject.omschrijving+' '+display_value( pobject.prijs )+'</option>';
               hidden_options += '<input type="hidden" id="tarief_prijscode_'+pobject.id+'" name="tarief_prijscode_'+pobject.id+'" value="'+pobject.prijs+'" />';
           });

           $('#bestel_tarieven_prijscode').html( hidden_options );

           // Trigger changeevent op selectboxes die toegevoegd zijn via ajax
           $('.bestel_prijscode_ticket').html( select_options ).change( function() {
              bestelPaginaBerekenTotaalprijs();
           });
           
           bestelPaginaBerekenTotaalprijs();
       });
    });

   // Trigger changeevent op selectboxes (editscherm)
   $('.bestel_prijscode_ticket').change( function() {
      bestelPaginaBerekenTotaalprijs();
   });

    bestelPaginaBerekenTotaalprijs();

    $('.cookiecheck').each( function() {
        document.cookie = "itixcookietest=123; path=/";
        if( '' == document.cookie )
        {
            $(this).css('display', 'block');
        }
    });
});

function check_kortingscode( )
{
    var kortingscode = $('#js_input_kortingscode').attr('value');

    $.getJSON('/framework/public/ajax/kortingscode.php?kortingscode='+kortingscode, function( data ) {
        if( true == data.success )
        {
            $('#js_input_kortingscode').attr('value', '');
            alert( data.message );
            $(location).attr( 'href', '/winkelmand' );
        }
        else
        {
            $('#js_input_kortingscode').attr('value', '');
            alert( data.message );
        }
   });
}

// Wordt aangeroepen door de stoelkeuze flash wanneer deze gereed is
// Sluit de colorbox en ga naar de volgende stap in de bestelprocedure
function verwerkStoelkeuze( )
{
    $.fn.colorbox.close();

    var sessie_id = $('#stoelkeuze_sessie_id').attr('value');

    $.getJSON('/framework/public/ajax/stoelkeuze.php?sessie_id='+sessie_id+'&choice=flash_map', function( data ) {
        var stoelen_stoelkeuze = data.stoelen.join(',');
        $('#aantal_tickets').val( data.stoelen.length );
        $('#aantal_tickets_old').val( data.stoelen.length );
        $('#stoelen_stoelkeuze').val( stoelen_stoelkeuze );
        $('#rangkeuze_rang_id').val( data.prijscode );
        $('#aantal_tickets').trigger( 'change' );
    });

    $('#bestel_stap_3').trigger('click');
}

// Wordt aangeroepen wanneer de gebruiker kiest voor de best seat optie
function verwerkBestSeat( )
{
    var sessie_id = $('#stoelkeuze_sessie_id').attr('value');

    $.getJSON('/framework/public/ajax/stoelkeuze.php?sessie_id='+sessie_id+'&choice=best_seat', function( ) {
        $('#aantal_tickets').trigger( 'change' );
    });

    $('#stoelen_stoelkeuze').val( '' );
    $('#bestel_stap_3').trigger('click');
}

// Bereken en toon totaalprijsen
function bestelPaginaBerekenTotaalprijs()
{
    var totaal         = 0;
    var totaal_kaarten = 0;
    var totaal_extraas = 0;
    
    $('.bestel_prijscode_ticket').each( function() {
        totaal_kaarten = totaal_kaarten + parseFloat( $('#tarief_prijscode_'+$(this).attr( 'value' ) ).attr( 'value' ) );
    });

    $('.bestel_prijscode_arrangement').each( function() {
        var arrangement = $(this).attr( 'id' ).split( '_' );
        var arrangement_id = arrangement[3].substring( 0, strpos( arrangement[3], '[' ) );
        totaal_extraas = totaal_extraas + parseFloat( $('#tarief_arrangement_'+arrangement_id+'_prijscode_'+$(this).attr( 'value' ) ).attr( 'value' ) );       
    });

    totaal = totaal + totaal_kaarten + totaal_extraas;

    if( 0 <= totaal_kaarten )
    {
        $('#bestel_stap4_totaal_kaarten').html( 'totaal kaarten: &euro;&nbsp;'+display_value( totaal_kaarten ) );
    }

    if( 0 <= totaal_extraas )
    {
        $('#bestel_stap4_totaal_opties').html( 'totaal extra opties: &euro;&nbsp;'+display_value( totaal_extraas ) );
    }

    if( 0 <= totaal )
    {
        $('#bestel_stap4_totaal').html( 'totaal: &euro;&nbsp;'+display_value( totaal ) );
    }
}


function updateShowPrijscodes( current )
{
    var aantal_tickets = parseInt( current.attr('value') );
    var aantal_tickets_old = $('#aantal_tickets_old').attr('value');
    
    // Als het aantal tickets wijzigd
    if( aantal_tickets_old != '' && aantal_tickets_old != aantal_tickets )
    {
        if( !confirm( 'Als u het aantal tickets wijzigt, vervallen de voor u gereserveerde stoelen. Klik op oke om door te gaan met de best beschikbare plaatsen, of klik op annuleren om uw huidige plaatsen te behouden.' ) )
        {
            $('#aantal_tickets').attr('value', $('#aantal_tickets_old').attr('value' ) );
            return;
        }
    }

    var blok = '';

    for( i = 1; i <= aantal_tickets; i++ )
    {
        blok += '<div class="stapblok2">'
             + '    <div class="aantal">1</div>'
             + '    <span>x</span>'
             + '    <select class="list bestel_prijscode_ticket" id="bestel_prijscode_ticket['+i+']" name="bestel_prijscode_ticket['+i+']">'
             + '    </select>'
             + '</div>';
    }

    $('#selectie_aantal_kaarten').html( blok );
    $('#rangkeuze_rang_id').trigger( 'change' );
}


function updateArrangementPrijscodes( current )
{
    var items_arrangement = current.attr('id').split('_');
    var arrangement_id    = items_arrangement[2];

    var aantal            = parseInt( current.attr('value') );
    var blok              = '';

    for( i = 1; i <= aantal; i++ )
    {
        blok +='<div class="stapblok2">'
             + '    <div class="aantal">1</div>'
             + '    <span>x</span>'
             + '    <select class="list bestel_prijscode_arrangement bestel_prijscode_arrangement_'+arrangement_id+'" id="bestel_prijscode_arrangement_'+arrangement_id+'['+i+']" name="bestel_prijscode_arrangement['+arrangement_id+']['+i+']">'
             + '    </select>'
             + '</div>';
    }
          
    // Ophalen beschikbare prijscodes
    var select_options    = '';
    var hidden_options    = '';
    $.getJSON('/framework/public/ajax/prijscodes.php?arrangement_id='+arrangement_id, function( data ) {
       $.each( data['results'], function( index, pobject ) {
           select_options += '<option value="'+pobject.id+'">'+pobject.omschrijving+' '+display_value( pobject.prijs )+'</option>';
           hidden_options += '<input type="hidden" id="tarief_arrangement_'+arrangement_id+'_prijscode_'+pobject.id+'" name="tarief_arrangement_'+arrangement_id+'_prijscode_'+pobject.id+'" value="'+pobject.prijs+'" />';
           $('#bestel_tarieven_prijscode_arrangement_'+arrangement_id).html( hidden_options );

       });
           
       $('.bestel_prijscode_arrangement_'+arrangement_id).html( select_options ).change( function() {
          bestelPaginaBerekenTotaalprijs();
       });
       bestelPaginaBerekenTotaalprijs();
    });

    $('#selectie_aantal_arrangement_'+arrangement_id).html( blok );
}

// Voer controles uit als men van de betaalstap naar ogone gaat
// Controleert of de stoelkeuze verlopen is, geeft alerts als dit niet het geval is
// en bepaalt eventueel zelf nieuwe stoelen
function check_betaling_reservering_stoelen( submitlink )
{
    // Controleer of de stoelen nog beschikbaar zijn
    $.getJSON('/framework/public/ajax/check_stoelen.php', function( data ) {
        if( true != data.success )
        {
            if (confirm('Je stoelkeuze van 1 of meerdere gekozen voorstellingen is verlopen. Klik op oke om door te gaan met de best beschikbare plaatsen, of klik op annuleren om nieuwe plaatsen te kiezen.'))
            {
                $.getJSON('/framework/public/ajax/check_stoelen.php?renew_seats=true', function( ) {
                    submitlink.parents('form:first').append('<input type="hidden" name="javascriptsubmit" value="true" />').trigger('submit');
                    return false;
                });
            }
            else
            {
                $(location).attr( 'href', '/winkelmand' );
            }
        }
        else
        {
            submitlink.parents('form:first').append('<input type="hidden" name="javascriptsubmit" value="true" />').trigger('submit');
            return false;
        }
    });
}

function check_reservering_stoelen( retry )
{
    // Controleer of de stoelen nog beschikbaar zijn
    $.getJSON('/framework/public/ajax/check_stoelen.php', function( data ) {
        if( true == data.success )
        {
            addReserveringToAnalytics();
            $(location).attr( 'href', '/betaalmethode' );
        }
        else
        {
            if ( false != retry )
            {
                if (confirm('Uw stoelkeuze van 1 of meerdere gekozen voorstellingen is verlopen. Klik op oke om door te gaan met de best beschikbare plaatsen, of klik op annuleren om nieuwe plaatsen te kiezen.'))
                {
                    $.getJSON('/framework/public/ajax/check_stoelen.php?renew_seats=true', function( ) {
                        check_reservering_stoelen( 'true' );
                    });
                }
            }
            else
            {
                alert('Helaas is het niet meer mogelijk om in dezelfde rang plaatsen voor u te boeken. Eventueel kunt u wel nog handmatig andere plaatsen selecteren.');
            }
        }
    });
}

// stoelkeuze foutafhandeling
function getFlashMovieObject(movieName)
{
  if (window.document[movieName])
  {
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName];
  }
  else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
  {
    return document.getElementById(movieName);
  }
}

function zaalFout(msg)
{
	alert(msg);
	if ($("#plaatskeuze").size() > 0)
	{
		var flashmovie = getFlashMovieObject('swf_stoelkeuze');
		flashmovie.maakZaal();
	}
}

function addReserveringToAnalytics()
{
	if(typeof pageTracker != 'undefined')
	{
       var reserveringsnummer     = $("#winkelmandje_reservering_id").val();
       var totaalbedrag           = $("#winkelmandje_totaalprijs_value").val().replace(/\./, "").replace(/\,/, ".");
       var btw                    = '';
       var reserveringskosten     = ''; //$("#winkelmandje_reserveringskosten_value").text().replace(/\./, "").replace(/\,/, ".");

       pageTracker._addTrans(
             reserveringsnummer,        // order ID - required
             "Theater de Kring",        // affiliation or store name
             totaalbedrag,              // total - required
             btw,                       // tax
             reserveringskosten,        // shipping
             "",                        // city
             "",                        // state or province
             ""                         // country
       );

       $(".winkelmandje_voorstelling").each(function()
       {
             var item_categorie = $(".winkelmandje_item_categorie", this).val();

             if (item_categorie)
             {
                    var pre_item_id = 'vst_';
                    if (item_categorie == 'artikel')
                           pre_item_id = 'art_';
                    else if (item_categorie == 'service')
                           pre_item_id = 'srv_';
                    else if (item_categorie == 'arrangement')
                           pre_item_id = 'arr_';

                    var item_id         = pre_item_id + $(".winkelmandje_item_id", this).val();
                    var item_naam       = $(".winkelmandje_item_naam", this).val();
                    var item_stukprijs  = $(".winkelmandje_item_stukprijs", this).val();
                    var item_aantal     = $(".winkelmandje_item_aantal", this).val();

                    pageTracker._addItem(
                           reserveringsnummer,                     // order ID - necessary to associate item with transaction
                           item_id,                                // SKU/code - required
                           item_naam,                              // product name
                           item_categorie,                         // category or variation
                           item_stukprijs,                         // unit price - required
                           item_aantal                             // quantity - required
                    );
             }
       });

       pageTracker._trackTrans();
	}
}

function StartTracking(){
	if (typeof(_gat) == 'object')
	{
		window.clearTimeout(hndl);
		pageTracker =_gat._getTracker(analytics_code);
		pageTracker._initData();
		pageTracker._trackPageview();
	} else {
		hndl = window.setTimeout("StartTracking()", 1000);
	}
}
