var pageTracker;
var analytics_code = "UA-15709295-1";

var hndl = window.setTimeout("StartTracking()", 100);

$(document).ready(function(){	
						   

	$("li.headlink a").mouseenter(function(){
		$(this).parent().find('ul').slideDown('fast');
	});
	
	$("li.headlink").mouseleave(function(){
		$('ul', this).slideUp('fast');
	});

	if ($('#seriepopup').length > 0)
    {
       $().colorbox({
        open: true,
        href:"#seriepopup",
        inline:true
       });
    }

    // zaalflash laden
	$('.flashzaal').each(function(){
		slideshowvars = $(this).html();
		$(this).html("");
		$(this).flash({
	    	src: slideshowvars,
	    	width: 950,
	    	height: 600,
			wmode: 'transparent',
			id: 'swf_stoelkeuze',
			name: 'swf_stoelkeuze',
			swliveconnect: true
		});
	});

	$(".uitgebreid").click(function () {
	  $('.zoekholder').show();
	});

    $('#uitloggen').click( function() {
        $.getJSON('/framework/public/ajax/uitloggen.php', function( data ) {
            // Refresh de pagina
            location.reload();
        });
    });
	
	// zoekmenu
    $('#maandenmenu').change( function()
    {
        var url = $('#maandenmenu').attr('value');
        $('#voorstellingzoeken').attr('href',url);
    });
    
    $('#genresmenu').change( function()
    {
        var url = $('#genresmenu').attr('value');
        $('#voorstellingzoeken').attr('href',url);
    });

    $('#zoekoptekst').keyup( function ( kb_key ) {
        if( ( kb_key.keyCode == 13 ) ) {
            $('#voorstellingzoeken').click();
        }
    });

    $('#voorstellingzoeken').click( function()
    {
        var siteLoc = (document.location+'').split('/');
        var subSite = '';
        if('demythe' == siteLoc[3] || 'tbeest' == siteLoc[3] || 'middelburg' == siteLoc[3])
        {
            subSite = '/'+siteLoc[3];
        }

        var region = ''
                   + ($('#middelburg').attr('checked') ? '-middelburg-middelburg2' : '' )
                   + ($('#goes').attr('checked') ? '-goes-goes2-goes3' : '' )
                   + ($('#vlissingen').attr('checked') ? '-vlissingen' : '' )
                   + ($('#schouwen').attr('checked') ? '-schouwenduiveland' : '' )
                   + ($('#veere').attr('checked') ? '-veere' : '' )
                   + ($('#reimerswaal').attr('checked') ? '-reimerswaal' : '' )
                   + ($('#zeeuwsvlaanderen').attr('checked') ? '-zeeuwsvlaanderen' : '' )
        ;
        region = ('' == region) ? '' : '/'+region.substring(1);
        
        var url = $('#voorstellingzoeken').attr('href');
        if( '' != $('#zoekoptekst').attr('value') )
        {
            url = subSite+'/zoekresultaten?zoek='+ $('#zoekoptekst').attr('value');
        }
        else if( url.match("^"+'/programma/agenda/')=='/programma/agenda/' )
        {
            url = subSite+url+region;
        }
        else if( url.match("^"+'/programma/genres/')=='/programma/genres/' )
        {
            var lastSlash = url.lastIndexOf('/');
            url = subSite+url.substring(0,lastSlash)+region+url.substring(lastSlash);
        }
        else
        {
            if('' == subSite)
            {
                alert('Vul het tekstveld bij uitgebreid zoeken in, selecteer een maand of selecteer een genre, alleen zoeken op regio is niet mogelijk.');
            }
            else
            {
                alert('Vul het tekstveld bij uitgebreid zoeken in, selecteer een maand of selecteer een genre om te zoeken.');
            }
        }

        $(location).attr( 'href', url );
        return false;
    });

    // Klapblokken menu
	$('.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');
		}
	});
	
	//eerste stap uitklappen
	$('#stappen .uitklaplink:first').trigger('click');


	$(".blokhover").hover(function()
	{
		$(this).find('.blokopen').addClass('opening');
		$('.blokopen').each(function(){
			if (!$(this).hasClass('opening'))
				$(this).slideUp(200);
			});
		$('.blokopen').removeClass('opening');
		$(this).find('.blokopen').slideDown(200);
	}, function(){
		$('.blokopen').slideUp(200);
	});
	
    // 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');
        }
    });

    // 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) );
		return false;
    });

    // Standaard klik op volgende stap
    $('.volgendestap').click(function()	{
        $(this).parents('.uitklapblok:first').next().find('.uitklaplink').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();
    });

    // Trigger changeevent op services
    $('.bestel_service').keydown( function() {
      bestelPaginaBerekenTotaalprijs();
    });

    // Trigger changeevent op services
    $('.bestel_service').keyup( function() {
      bestelPaginaBerekenTotaalprijs();
    });

    bestelPaginaBerekenTotaalprijs();

    $('.cookiecheck').each( function() {
        document.cookie = "itixcookietest=123; path=/";
        if( '' == document.cookie )
        {
            $(this).css('display', 'block');
        }
    });

    // controle kortingscode
	$("#js_winkelmand_kortingscode").click(function() {
        check_kortingscode( );
    });
});


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' ) );       
    });

    $('.bestel_service').each( function() {
        var service = $(this).attr( 'id' ).split( '_' );
        totaal_extraas = totaal_extraas + parseFloat( ( $('#tarief_service_'+service[2] ).attr( 'value' ) ) * $(this).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);
	}
}
