/***
 * Fabrique - Skeleton
 *
 * Description: Generic userinterface enhancements
 * Author: Fabrique[brands, design &amp; interaction] - http://fabrique.nl/
           Marko, Emko, Esther, Jaap, Jeroen 
 * Date: 2011-03-18
 */


/***
 * Application start - public void main       
*/
 
function Application() {}
Application.prototype = {
  init: function() {
    this.setupVerderWinkelenPopover();
    this.setupProjectPageJS();
    this.setupNewsletterPopup();
    this.setupPayformValidation();
    this.setupEditCartLinks();
    this.setupPrint();
    this.setupExternalLinks();
    this.setupNumericInputs();
    this.setupPaymentOptionsLogic();
    this.setupBedragSelector();
    this.setupContentPageJS();
    this.setupSocialTracking();
  },

  setupSocialTracking: function() {
      /* Algemene FB events */
      if (typeof FB !== 'undefined') {
          FB.Event.subscribe('edge.create', function(targetUrl) {
              _gaq.push(['_trackSocial', 'facebook', 'like', targetUrl]);
          });
          FB.Event.subscribe('edge.remove', function(targetUrl) {
              _gaq.push(['_trackSocial', 'facebook', 'unlike', targetUrl]);
          });
          FB.Event.subscribe('message.send', function(targetUrl) {
              _gaq.push(['_trackSocial', 'facebook', 'send', targetUrl]);
          });
      }
      /* Algemene Twitter events */
      if (typeof twttr !== 'undefined') {
          twttr.events.bind('tweet', function(event) {
              if (event) {
                  var targetUrl;
                  if (event.target && event.target.nodeName == 'IFRAME') {
                      targetUrl = extractParamFromUri(event.target.src, 'url');
                  }
                  _gaq.push(['_trackSocial', 'twitter', 'tweet', targetUrl]);
              }
          });
      }

      /* Vang linkjes op */
      var track_twitter_visit = function() { _gaq.push(['_trackSocial', 'Twitter','Visit']); };
      var track_facebook_visit = function() { _gaq.push(['_trackSocial', 'Facebook','Visit']); };
      var track_facebook_share = function() { _gaq.push(['_trackSocial', 'Facebook','Share']); };
      var track_twitter_share = function() { _gaq.push(['_trackSocial', 'Twitter','Share']); };
      var track_linkedin_share = function() { _gaq.push(['_trackSocial', 'Linkedin','Share']); };
      var track_hyves_share = function() { _gaq.push(['_trackSocial', 'Hyves','Share']); };

      $('a.share_twitter').click(track_twitter_share);
      $('a.share_facebook').click(track_facebook_share);
      $('a.share_linkedin').click(track_linkedin_share);
      $('a.share_hyves').click(track_hyves_share);
      $('a.twitter').click(track_twitter_share);
      $('a.facebook').click(track_facebook_share);
      $('a.linkedin').click(track_linkedin_share);
      $('a.hyves').click(track_hyves_share);
      $('#like_twitter a').click(track_twitter_share);
      $('#like_facebook a').click(track_facebook_share);
      $('#like_linkedin a').click(track_linkedin_share);
      $('#like_hyves a').click(track_hyves_share);

      $('#twitter a').click(track_twitter_visit);
      $('a.goto_twitter').click(track_twitter_visit);
      $('#facebook a').click(track_facebook_visit);
  },
  setupVerderWinkelenPopover: function() {
    
        if ($("#verderwinkel_trigger").length>0) {
            $("#verderwinkel_trigger").fancybox({
                'titlePosition'		: 'inside',
                'transitionIn'		: 'none',
                'transitionOut'		: 'none',
                'overlayColor' 		: '#030303'
            });
        }
    
        $('form.forminvesteren').submit(function(e){
			e.preventDefault();
            serdata = $(this).serialize();

            $.ajax({
                url: '/add_to_cart',
                data: serdata + '&ajaxcall=1',
                success: function(data) {
                    $('#choose_verder_winkel_options').html(data);
                    $("#verderwinkel_trigger").trigger('click');
                    
                    $.ajax({
                        url: '/update_minicart',
                        success: function(data) {
                            $('#minicart_container').html(data);
                        }
                    });
                    
                }
            });

            
		});
    
  },
  


  setupNumericInputs: function() {
     $('.donation_amount').numeric();
     $('#id_rekeningnummer').numeric();
     $('#id_rekeningnummer').keydown(function(e) {
        // voorkom langer dan 12 tekens (maar laat verbeteringen toe)
        return $(this).val().length <= 12 || ((e.keyCode < 48 || e.keyCode > 57) && (e.keyCode < 96 || e.keyCode > 105 ));
     });
  },
  
  setupContentPageJS: function() {
  
  		$('#content span.figure').each(function(){
			var newWidth = $(this).children('img').width();
			$(this).width(newWidth); 
		});
		$('.contentpage #content > ul > li > a').parent(0).parent(0).addClass('linklist');
  },
  
   setupProjectPageJS: function() {
   if ($("#projecttab").length>0) {

	   // carousel voor projectpagina
	   jQuery('#imagegallery').jcarousel({
	       wrap: 'circular',
		   setupCallback : function() {
			$('.uitweinigfotos .jcarousel-prev').unbind();
			$('.uitweinigfotos .jcarousel-prev').hide();
			$('.uitweinigfotos .jcarousel-next').unbind();
			$('.uitweinigfotos .jcarousel-next').hide();
		   }
	    }); 	   
	   
		$("a.grouped_elements").fancybox({
			'cyclic'		: 	'true',
			'transitionIn'	:	'elastic',
			'transitionOut'	:	'elastic',
			'speedIn'		:	600, 
			'speedOut'		:	200, 
			'titleShow'		: 	'true',
			'titlePosition'	: 	'inside'
		});
		//var meerUpdates = $('#meerupdates');
		//var leesNogMeerUpdates = $('#leesnogmeer');
        //var leesnogmeerupdatestoggle_back = $('#leesnogmeerupdatestoggle_back');
		//meerUpdates.hide();
        //leesnogmeerupdatestoggle_back.hide();
		//leesNogMeerUpdates.hide();
		$('.leesmeer a').click(function(e){
			e.preventDefault();
            $(this).find('.meerlink').toggle();
            $(this).find('.minderlink').toggle();
			$(this).parent().next().toggle('fast');
			//$('#leesmeerupdatestoggle').hide();
		});
		//$('#leesmeerupdatestoggle_back a').click(function(e){
		//	e.preventDefault();
		//	meerUpdates.hide();
         //   leesNogMeerUpdates.hide();
          //  $('#leesnogmeerupdatestoggle').css({'font-weight':'normal'});
         //   leesnogmeerupdatestoggle_back.css({'font-weight':'bold'});
		//	$('#leesmeerupdatestoggle').show();
		//});
		//$('#leesnogmeerupdatestoggle').click(function(e){
	//		e.preventDefault();
      //      meerUpdates.show();
		//	leesNogMeerUpdates.show();
          //  $('#leesmeerupdatestoggle').hide();
            //leesnogmeerupdatestoggle_back.show();
            //leesnogmeerupdatestoggle_back.css({'font-weight':'normal'});
            //$(this).css({'font-weight':'bold'});
            
	//		$(this).hide();
		//});
        //$('#leesnogmeerupdatestoggle_back').click(function(e){
		//	e.preventDefault();
		//	leesNogMeerUpdates.hide();
         //   meerUpdates.hide();
          //  $('#leesmeerupdatestoggle').show();
           // $(this).css({'font-weight':'bold'});
            //$('#leesnogmeerupdatestoggle').css({'font-weight':'normal'});
            //$('#leesnogmeerupdatestoggle').show();
			//$(this).hide();
		//});
		$('#content span.figure').each(function(){
			var newWidth = $(this).children('img').width();
			$(this).width(newWidth); 
		});
		var projectTab = $('.projecttab');
		var ondernemerTab = $('.ondernemerstab');
		if (!$('#projecttab').hasClass('hier')) { projectTab.hide(); }
        if (!$('#ondernemertab').hasClass('hier')) { ondernemerTab.hide(); }
        
		$('#ondernemertab').click(function(e){
			e.preventDefault();
			$(this).addClass('hier');
			projectTab.hide();
			ondernemerTab.show();
			$('#projecttab').removeClass('hier');
		});
		$('#projecttab').click(function(e){
			e.preventDefault();
			$(this).addClass('hier');
			ondernemerTab.hide();
			projectTab.show();
			$('#ondernemertab').removeClass('hier');
		});
        
        // fancybox
        $("#allinvestors").fancybox({
			'titlePosition'		: 'inside',
			'transitionIn'		: 'none',
			'transitionOut'		: 'none',
			'overlayColor' 		: '#030303',
			'width'         	: 628,
			'height'			: 418
		});
        
    }

   },

  setupPayformValidation: function() {
  
    if ($(".gotaccount").length>0) {
  		$(".gotaccount").fancybox({
			'titlePosition'		: 'inside',
			'transitionIn'		: 'none',
			'transitionOut'		: 'none',
			'overlayColor' 		: '#030303'
		});
    }
		// scroll functie om naar foutmelding te scrollen
		jQuery.fn.scrollToViewPort = function(animTimeInterval) {
		  animTimeInterval = (typeof animTimeInterval == "undefined")?"slow":animTimeInterval;
		  return this.each(function(){
		    $('html,body').animate({scrollTop: $(this).offset().top},animTimeInterval);
		  });
		}

    if ($("#formgegevens").length>0) {
        $("#formgegevens").validate({
        	onkeyup: false,
            focusCleanup: true,
            focusInvalid: false,
                invalidHandler: function(form, validator){
                    $(".error:first").stop().scrollToViewPort(600);
                },
            rules: {
                first_name: "required",
                last_name: "required",
                email: {
                    required: true,
                    email: true
                },
                type_account: "required"
                //voorwaarden: "required",
            },
            messages: {
                first_name: "Je hebt je voornaam niet ingevuld",
                last_name: "Je hebt je achternaam niet ingevuld",
                email: {
                    required: "Je hebt je e-mailadres niet ingevuld",
                    email: "Je hebt geen geldig e-mailadres ingevuld",
                },
                type_account: "Vink een optie aan",
                //rekeningnummer: "Je hebt je rekeningnummer niet ingevuld",
                voorwaarden: "Je bent nog niet akkoord met de voorwaarden",
            },
            success: "valid",
            });
    }
  },
    
  setupPaymentOptionsLogic: function() {  
  
   $('label[generated=\'true\']').click(function(e) {
        $(this).hide();
   });
   
  
   $('.type-account input').click(function(e) {
        value = $(this).attr('value');
        if ( value == 'Bedrijf' ) {
            $('#company_fields').slideDown();
        } 
        else {
            $('#company_fields').slideUp();
        }
   } );
  
   $('.betaalwijze .radiolist input').click(function(e) {
        value = $(this).attr('value');
        if ( value == 'Subscription' ) {
            $('.rekeningnummer').slideDown();
        } 
        else {
            $('.rekeningnummer').slideUp();
        }
    } );
  
  },
  setupEditCartLinks: function() {
    $('#projectlist a.change').click(function(e) {
      minput = $(this).attr('rel');
      $('#'+minput).removeAttr("disabled"); 
      $(this).html('Opslaan');
      var thisform = "#" + minput + "_form";
      $(this).click(function(e) {
        $(thisform).submit();
        e.preventDefault();
        e.stopPropagation();
      });
      e.preventDefault();
      e.stopPropagation();
    });
  },
  
  setupPrint: function() {
    $('a.print').click(function(e) {
      print();
      e.preventDefault();
      e.stopPropagation();
    });
  },

  setupExternalLinks: function() {
    $("a[rel='external']").each(function(index, el) {
      $(el).attr('target','_blank');
    });
  },

  setupNewsletterPopup: function() {
    if ($(".nieuwsbrief").length>0) {
  		$(".nieuwsbrief").fancybox({
			'titlePosition'		: 'inside',
			'transitionIn'		: 'none',
			'transitionOut'		: 'none',
			'overlayColor' 		: '#030303'
		});
    }
  },

  setupBedragSelector: function() {
    if ($(".machtigingbedrag").length>0) {
        var options = $(".machtigingbedrag li");
        var bedrag = $(".machtigingbedrag input#id_bedrag")
        var eigenbedrag = $(".machtigingbedrag input#eigenbedrag")
        var is_eigenbedrag = true;
        options.each(function(index) {
            var item = $(this);
            var value = item.val();
            if (value) { // vast bedrag
                item.click(function (e) {
                    bedrag.val(value);
                    options.removeClass('selected');
                    item.addClass('selected');
                });
                if (bedrag.val() == value) {
                    item.addClass('selected');
                    is_eigenbedrag = false;
                }
            } else { // eigen bedrag
                item.click(function (e) {
                    options.removeClass('selected');
                    item.addClass('selected');
                    eigenbedrag.select();
                });
                eigenbedrag.focus(function(e) {
                    options.removeClass('selected');
                    item.addClass('selected');
                    eigenbedrag.val(eigenbedrag.val().substring(2));
                    eigenbedrag.select();
                });
                eigenbedrag.keyup(function(e) {
                    var val = parseInt(eigenbedrag.val());
                    if (isNaN(val)) { // reset to previous value
                        val = bedrag.val();
                    }
                    bedrag.val(val);
                });
                eigenbedrag.blur(function(e) {
                    var val = parseInt(eigenbedrag.val());
                    if (isNaN(val)) { // reset to previous value
                        val = bedrag.val();
                    }
                    bedrag.val(val);
                    eigenbedrag.val("€ " + val);
                });
            }
        });
        if (is_eigenbedrag) {
            eigenbedrag.val("€ " + bedrag.val());
            $(".machtigingbedrag .bedrag").addClass("selected");
        }
    }
  }
};

var app = new Application();
$(document).ready(function() {
  app.init();
});



