/**
 * Bootstrap.js - JavaScript bootstrapper
 * 
 * @author Webstores <info at webstores dot nl>
 *         Copyright (c) Webstores internet totaalbureau <http://www.webstores.nl/>
 */
$(document).ready(function() {
	
    // Utilities
    WS.Util.externalLinks();
    WS.Util.rowClick();
    WS.Util.fixPlaceholders();
	
    // Messages
    MessageBar.init();
	
    // IE6 fixes
    if(/msie 6/i.test(navigator.userAgent)) {
        MessageBar.show('warning', '<h1>U gebruikt een zeer oude versie van Internet Explorer</h1><p>Voor een optimale ervaring is het aan te raden om de <a href="http://www.microsoft.com/netherlands/windows/internet-explorer/" title="De laatste versie van Internet Explorer downloaden" rel="external">laatste versie van Internet Explorer</a> te installeren, of te kiezen voor een alternatieve browser zoals <a href="http://www.mozilla.com/firefox/" title="Mozilla Firefox downloaden" rel="external">Firefox</a>, <a href="http://www.google.com/chrome" title="Google Chrome downloaden" rel="external">Chrome</a>, <a href="http://www.apple.com/nl/safari/" title="Apple Safari downloaden" rel="external">Safari</a> of <a href="http://www.opera.com/" title="Opera downloaden" rel="external">Opera</a>.</p>');
        WS.Util.fixIE6HoverList();
    }
	
    // AJAX loading
    $(document.body).ajaxStart(function() {
        $(this).addClass('loading');
    }).ajaxComplete(function() {
        $(this).removeClass('loading');
    });
	
    // Togglers
    $('.accordion').each(function() {
        switch(this.id) {
            /*case 'whatever-accordion':
				new Toggler(this).expand($(this).find('li:first-child'));
				break;*/
            default:
                new Toggler(this);
                break;
        }
    });
	
    // Carousels
    if($('#spotlight-items').length > 0) {
        var fyc = new YouTubeCarousel('#spotlight-items', {
            auto: 5
        });
    }

    // Sponsor detail tabs with youtube carousel
    if($('.section-sponsor-detail #main').length > 0) {
            
        var youtubeToggler = new Toggler($('.section-sponsor-detail'), {
            allowMultiple: false,
            onBeforeCollapse: function(item) {
                if(fyc != undefined)
                {
                    $(fyc.getPlayers()).each(function() {
                        if(this.playing) {
                            this.pauseVideo();
                        }
                    });
                    fyc.getCarousel().stopAuto();
                }
            },
            onAfterExpand: function(item) {
                $('.section-sponsor-detail #main .toggler').each(function() {
                    if('#'+$(item).attr('id') == $(this).attr('href')) {
                        $(this).addClass('selected');
                    } else {
                        $(this).removeClass('selected');
                    }
                });
                if($(item).find('#spotlight').length > 0) {
                    fyc.getCarousel().startAuto();
                }
            }
        }).expand($(this).find('#project'));
    }
    

    if($('#taf-form').length > 0) {
        var tafToggler = new Toggler('#taf-form');
    }

    // Validation
    $('form').each(function() {
        $(this).validate();
    });
	
	
    // Shadowbox
    Shadowbox.init({
        overlayOpacity: 0.8,
        troubleElements: ['select']
    });
	
    // Font Sizer
    var fs = new FontSizer('#font-size', {
        applyTo: ['body']
    });

    var cf = new CheckoutForm('#checkout');
        
    if($('#donation-config .donation-input').length) {
        var amounts = [5, 10, 25, 40, 50];
        if($('input#CampagneType').val() == 'eindejaar')
            amounts = [5, 15, 20, 30, 50];
                
        var values = [0, 0, 0, 0, 0];
        $('#donation-config .donation-input').each(function(i){
            $(this).change(function(){
                var d = $('input#donation-value').val();
                var ov = values[i];
                var nv = (isNaN(this.value) || this.value == "") ? 0 : this.value;

                d = (d - (ov * amounts[i])) + (nv * amounts[i]);
                values[i] = nv;

                $('input#donation-value').val( d );
                $('span#donation-value-display').text( d );
            });
        });

        var val = $('input#donation-value').val();
        $('span#donation-value-display').text( val );
    }
    
/* Shop personal details */
	   
    
});

function ShoppingPersonal(available) {
    this.available = available;
    this.activeForms = 0;
    this.totalprice = 0;
    this.set = new Array;
    this.init();
}

ShoppingPersonal.prototype = {
    /**
	 * Initialize
	 */
    init: function() {
        var self = this;
        var prevVal = null;
        var prevFormData = null;
        var formData = Array();
        $('#contact-add-address').click(function(){
            self.activeForms++;
            self.addForm(prevVal);
        });
                
        $('#checkout-personal-private').data("content", $('#checkout-personal-private').html());
        $('#checkout-personal-company').data("content", $('#checkout-personal-company').html());
        
        $('#order-type-private, #order-type-company').change(function(){
            if($(this).val() != "company"){
                $('.contact-text:not(.modified)').val('Beste ,\n\nTijdens deze bijzondere laatste dagen van het jaar willen we je graag verblijden met een cadeau. Bij deze! Het is een cadeau wat jij eigenlijk niet krijgt. Onder het motto: een glimlach hier, een glimlach daar.\n\nEigenlijk is het een heel bijzonder cadeau, want door jou dit cadeau te schenken helpen wij samen met Red een Kind kinderen in ontwikkelingslanden in Azië en Afrika aan een betere toekomst. \n\nKijk gerust eens op hun website: www.redeenkind.nl en kijk hoe zij kinderen en gezinnen in ontwikkelingslanden een steuntje in de rug geven.\n\nHartelijke groet,');
            }else{
                $('.contact-text:not(.modified)').val('Beste relatie,\n\nWij willen u hartelijk danken voor onze samenwerking in het afgelopen jaar. Wij stellen onze contacten zeer op prijs.\n\nBij een goede relatie hoort waardering, vandaar dit bijzondere geschenk. Bijzonder, want door u dit cadeau te schenken helpen wij samen met Red een Kind kinderen in ontwikkelingslanden in Afrika aan een betere toekomst.\n\nKijk gerust eens op hun website: www.redeenkind.nl en ondervind hoe zij kinderen en gezinnen in ontwikkelingslanden ondersteunen naar een zelfstandig bestaan.\n\nMet vriendelijke groet,');
            }
        	
            if($(this).val() == 'company' && self.totalprice < 400)
                $('#message-company').show();
            else
                $('#message-company').hide();
            
            if(prevVal != null){
                $('#checkout-personal-'+prevVal+' input').each(function(i, data){
                    formData.push({
                        name: data.name, 
                        val: data.value, 
                        checked: data.checked
                    });
                });
        		
                prevFormData = formData;
            }
    		
            $('#checkout-personal-private, #checkout-personal-company').empty();
            if($('#checkout-personal-details').css('display') == 'none'){
                $('#checkout-personal-details').show();
                self.addForm($(this).val());
                $('#contact-accordion').accordion();
            }
            $('#intro-private, #intro-company').hide();
            $('#intro-'+$(this).val()).show();

            $('#checkout-personal-'+$(this).val()).html($('#checkout-personal-'+$(this).val()).data("content")).show();
            
            vtip();
            
            $(prevFormData).each(function(i, data){
                $('input[name="'+data.name+'"]').val(data.val);
            });
			
            prevFormData = formData;
            prevVal = $(this).val();
        });
		
    },
    
    observeName: function()
    {
        $('.contact-name').keyup(function(){
            $('#contact-accordion h3.ui-state-active a').text($(this).val());
        });  
    },
    
    handleForm: function()
    {       
        var self = this;
            	
        left = self.getAmountToGo();
        
        $('#contact-presents-left').text(left);
        if(left == 0){
            $('#contact-add-address').hide();
        }
    },
    
    getAmountToGo: function(){
        var total = 0;
        $.each( this.available, function(i, item){
            total += item.amount;
        });
        
        var total_set = $('#contact-accordion h3').length;
        var left = total - total_set;
        
        return left;
    },  
    
    setItemAmounts: function() {
        var av = new Array;
        $.each($('.contact-present-set'), function(i, item){
            var key = $(this).val();
            av[key] = (av[key] == undefined) ? 1 : av[key] + 1;
        });
        
        this.set = av;
    },    
    addForm: function(type)
    {
        var self = this;
        $('#contact-accordion').accordion('destroy');
 
        $.each($('.contact-present'), function(i, item){
            var key = $(this).find('option:selected').val();
            var id = $(this).attr('id').split('-')[2];
            
            $(this).parent().append('<input type="hidden" class="contact-present-set" id="contact-present-'+id+'" name="contact['+id+'][present]" value="'+key+'" />'+key);
            $(this).remove();
        });
       
        
        self.setItemAmounts();
        options = '';
        $.each( self.available, function(i, item){
            item_left = item.amount - ((self.set[item.name] == undefined) ? 0 : self.set[item.name]);
            if(item_left > 0){
                options += '<option value="'+item.name+'">'+item.name+'</option>';                
            }
        });
        
        unique = this.activeForms; // $('#contact-accordion h3').length;
        template = '<h3>'+(unique+1)+'<a href="#"></a></h3>',
        template += '<div class="body">';
		
        template += '<div class="row">';
        template += '<label class="indent" for="contact-name-'+unique+'">Naam</label>';
        template += '<input class="contact-name text required" id="contact-name-'+unique+'" type="text" name="contact['+unique+'][name]">';
        template += '</div>';
		
        template += '<div class="row">';
        template += '<label class="indent" for="contact-address-'+unique+'">Adres</label>';
        template += '<input id="contact-address-'+unique+'" class="text required" type="text" name="contact['+unique+'][address]">';
        template += '</div>';
		
        template += '<div class="row">';
        template += '<label class="indent" for="contact-postalcode-'+unique+'">Postcode</label>';
        template += '<input id="contact-postalcode-'+unique+'" class="text required" type="text" name="contact['+unique+'][postalcode]">';
        template += '</div>';
		
        template += '<div class="row">';
        template += '<label class="indent" for="contact-place-'+unique+'">Woonplaats</label>';
        template += '<input id="contact-place-'+unique+'" class="text required" type="text" name="contact['+unique+'][place]">';
        template += '</div>';
		
        template += '<div class="row">';
        template += '<label class="indent" for="contact-present-'+unique+'">Cadeau <img class="vtip" title="U kunt hier per persoon kiezen welk geschenk u wilt dat deze persoon ontvangt" src="/img/helpicon.png" width="16" height="16"></label>';
        template += '<select class="contact-present" id="contact-present-'+unique+'" name="contact['+unique+'][present]">';
        template += options;
        template += '</select>';
        template += '</div>';
		
        template += '<div class="row">';
        template += '<label class="indent" for="contact-text-'+unique+'">Tekst op de kaart <img class="vtip" title="U kunt de voorbeeldtekst helemaal aan uw wensen aanpassen" src="/img/helpicon.png" width="16" height="16"></label>';

        if(type != "company"){
            template += '<textarea id="contact-text-'+unique+'" class="contact-text text required" name="contact['+unique+'][text]">Beste ,\n\nTijdens deze bijzondere laatste dagen van het jaar willen we je graag verblijden met een cadeau. Bij deze! Het is een cadeau wat jij eigenlijk niet krijgt. Onder het motto: een glimlach hier, een glimlach daar.\n\nEigenlijk is het een heel bijzonder cadeau, want door jou dit cadeau te schenken helpen wij samen met Red een Kind kinderen in ontwikkelingslanden in Azië en Afrika aan een betere toekomst. \n\nKijk gerust eens op hun website: www.redeenkind.nl en kijk hoe zij kinderen en gezinnen in ontwikkelingslanden een steuntje in de rug geven.\n\nHartelijke groet,\n\n</textarea>';
        }else{
            template += '<textarea id="contact-text-'+unique+'" class="contact-text text required" name="contact['+unique+'][text]">Beste relatie,\n\nWij willen u hartelijk danken voor onze samenwerking in het afgelopen jaar. Wij stellen onze contacten zeer op prijs.\n\nBij een goede relatie hoort waardering, vandaar dit bijzondere geschenk. Bijzonder, want door u dit cadeau te schenken helpen wij samen met Red een Kind kinderen in ontwikkelingslanden in Afrika aan een betere toekomst.\n\nKijk gerust eens op hun website: www.redeenkind.nl en ondervind hoe zij kinderen en gezinnen in ontwikkelingslanden ondersteunen naar een zelfstandig bestaan.\n\nMet vriendelijke groet,</textarea>';
        }
        template += '</div>';
		
        template += '</div>';
            
        $.each($('.contact-present'), function(i, item){
            var key = $(this).find('option:selected').val();
            av[key] = (av[key] == undefined) ? 1 : av[key] + 1;
        });
        
        $('#contact-accordion').append(template);
        $('#contact-accordion').accordion({
            active: unique
        });
        
        self.observeName();
        self.handleForm();
        vtip();
        
        $('html, body').animate({
            scrollTop:275
        }, 'slow');
        
        $('.contact-text').keyup(function(){
            $(this).addClass('modified');
            if($(this).val().length > 650){
                $(this).val($(this).val().substring(0,650));
                $(this).scrollTop(
                    $(this)[0].scrollHeight - $(this).height()
                    );
            }
        });
    }
        
};
