/*
 * FancyBox - simple and fancy jQuery plugin
 * Examples and documentation at: http://fancy.klade.lv/howto
 * Version: 1.2.1 (13/03/2009)
 * Copyright (c) 2009 Janis Skarnelis
 * Licensed under the MIT License: http://en.wikipedia.org/wiki/MIT_License
 * Requires: jQuery v1.3+
 */

$(document).ready(function() {
  // $("a.popupTirageFluide[behavior*=fancybox]").fancybox({ 'frameWidth': 55, 'frameHeight': 65, 'padding':2, hideOnContentClick:false });
  $("a.popupTirage[behavior*=fancybox]").fancybox({ 'frameWidth': 620, 'frameHeight': 400, 'padding':25, hideOnContentClick:false });
  $("a.popupPortrait[behavior*=fancybox]").fancybox({ 'padding':25, hideOnContentClick:false });

  /*
  basic
  $("#menu a.fondation_f_02").fancybox();
  custom
  $("a#inline").fancybox({ 'hideOnContentClick': true });
  $("a.group").fancybox({ 'zoomSpeedIn': 300, 'zoomSpeedOut': 300, 'overlayShow': false });

  ---OPTIONS---
  padding  							Padding around content
  imageScale 							If true, images are scaled to fit in viewport
  zoomOpacity 						If true, changes content transparency when animating
  zoomSpeedIn 						Speed in miliseconds of the zooming-in animation (no animation if 0)
  zoomSpeedOut 						Speed in miliseconds of the zooming-out animation (no animation if 0)
  zoomSpeedChange 					Speed in miliseconds of the animation when changing gallery items (no animation if 0)
  easingIn, easingOut, easingChange 	Easing used for animations
  frameWidth 							Default width for iframed and inline content
  frameHeight 						Default height for iframed and inline content
  overlayShow 						If true, shows the overlay (false by default) Overlay color is defined in CSS file
  overlayOpacity 						Opacity of overlay (from 0 to 1)
  hideOnContentClick 					Hides FancyBox when cliked on opened item
  centerOnScroll 						If true, content is centered when user scrolls page
  itemArray 							Optional, can set custom item array
  callbackOnStart 					Optional, called on start
  callbackOnShow 						Optional, called on displaying content
  callbackOnClose 					Optional, called on close*/
});

;(function($) {

  $.fn.fixPNG = function() {
    return this.each(function () {
      var image = $(this).css('backgroundImage');

      if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
        image = RegExp.$1;
        $(this).css({
          'backgroundImage': 'none',
          'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=" + ($(this).css('backgroundRepeat') == 'no-repeat' ? 'crop' : 'scale') + ", src='" + image + "')"
        }).each(function () {
          var position = $(this).css('position');
          if (position != 'absolute' && position != 'relative')
            $(this).css('position', 'relative');
        });
      }
    });
  };

  var elem, opts, busy = false, imagePreloader = new Image, loadingTimer, loadingFrame = 1, imageRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i;
  var isIE = ($.browser.msie && parseInt($.browser.version.substr(0,1)) < 8);

  $.fn.fancybox = function(settings) {
    settings = $.extend({}, $.fn.fancybox.defaults, settings);

    var matchedGroup = this;

    function _initialize() {
      elem = this;
      opts = settings;

      _start();

      return false;
    };

    function _start() {
      if (busy) return;

      if ($.isFunction(opts.callbackOnStart)) {
        opts.callbackOnStart();
      }

      opts.itemArray		= [];
      opts.itemCurrent	= 0;

      if (settings.itemArray.length > 0) {
        opts.itemArray = settings.itemArray;

      } else {
        var item = {};

        if (!elem.rel || elem.rel == '') {
          var item = {href: elem.href, title: elem.title};

          if ($(elem).children("img:first").length) {
            item.orig = $(elem).children("img:first");
          }

          opts.itemArray.push( item );

        } else {

          var subGroup = $(matchedGroup).filter("a[rel=" + elem.rel + "]");

          var item = {};

          for (var i = 0; i < subGroup.length; i++) {
            item = {href: subGroup[i].href, title: subGroup[i].title};

            if ($(subGroup[i]).children("img:first").length) {
              item.orig = $(subGroup[i]).children("img:first");
            }

            opts.itemArray.push( item );
          }

          while ( opts.itemArray[ opts.itemCurrent ].href != elem.href ) {
            opts.itemCurrent++;
          }
        }
      }

      if (opts.overlayShow) {
        if (isIE) {
          $('embed, object, select').css('visibility', 'hidden');
        }

        $("#fancy_overlay").css('opacity', opts.overlayOpacity).show();
      }

      _change_item();
    };

    function _change_item() {
      $("#fancy_right, #fancy_left, #closePopup, #closePopupImage, #fancy_title").hide();

      var href = opts.itemArray[ opts.itemCurrent ].href;

      if (href.match(/#/)) {
        var target = window.location.href.split('#')[0]; target = href.replace(target, ''); target = target.substr(target.indexOf('#'));

        _set_content('<div id="fancy_div">' + $(target).html() + '</div>', opts.frameWidth, opts.frameHeight);

      } else if (href.match(imageRegExp)) {
        imagePreloader = new Image; imagePreloader.src = href;

        if (imagePreloader.complete) {
          _proceed_image();

        } else {
          $.fn.fancybox.showLoading();

          $(imagePreloader).unbind().bind('load', function() {
            $(".fancy_loading").hide();

            _proceed_image();
          });
        }

       } else if (href.match("iframe") || elem.className.indexOf("iframe") >= 0) {
        _set_content('<iframe id="fancy_frame" onload="$.fn.fancybox.showIframe()" name="fancy_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + href + '"></iframe>', opts.frameWidth, opts.frameHeight);

      } else {
        $.get(href, function(data) {
          _set_content( '<div id="fancy_ajax">' + data + '</div>', opts.frameWidth, opts.frameHeight );
        });
      }
    };

    function _proceed_image() {
      if (opts.imageScale) {
        var w = $.fn.fancybox.getViewport();

        var r = Math.min(Math.min(w[0] - 36, imagePreloader.width) / imagePreloader.width, Math.min(w[1] - 60, imagePreloader.height) / imagePreloader.height);

        var width = Math.round(r * imagePreloader.width);
        var height = Math.round(r * imagePreloader.height);

      } else {
        var width = imagePreloader.width;
        var height = imagePreloader.height;
      }

      _set_content('<img alt="" id="fancy_img" src="' + imagePreloader.src + '" />', width, height);
    };

    function _preload_neighbor_images() {
      if ((opts.itemArray.length -1) > opts.itemCurrent) {
        var href = opts.itemArray[opts.itemCurrent + 1].href;

        if (href.match(imageRegExp)) {
          objNext = new Image();
          objNext.src = href;
        }
      }

      if (opts.itemCurrent > 0) {
        var href = opts.itemArray[opts.itemCurrent -1].href;

        if (href.match(imageRegExp)) {
          objNext = new Image();
          objNext.src = href;
        }
      }
    };

    function _set_content(value, width, height) {
      busy = true;

      var pad = opts.padding;

      if (isIE) {
        $("#fancy_content")[0].style.removeExpression("height");
        $("#fancy_content")[0].style.removeExpression("width");
      }

      if (pad > 0) {
        width	+= pad * 2;
        height	+= pad * 2;

        /*Calcul si fluide - pour simplifier je pars de l idee qu on veut rarement une popup fixe inferieure a 100px de large....*/
        if (width < 100) {

        $("#fancy_content").css({
          'top'		: pad + '%',
          'right'		: pad + '%',
          'bottom'	: pad + '%',
          'left'		: pad + '%',
          'width'		: 'auto',
          'height'	: 'auto'
        });

        } else {

        $("#fancy_content").css({
          'top'		: pad + 'px',
          'right'		: pad + 'px',
          'bottom'	: pad + 'px',
          'left'		: pad + 'px',
          'width'		: 'auto',
          'height'	: 'auto'
        });

        }

        if (isIE) {
          $("#fancy_content")[0].style.setExpression('height',	'(this.parentNode.clientHeight - 20)');
          $("#fancy_content")[0].style.setExpression('width',		'(this.parentNode.clientWidth - 20)');
        }

      } else {
        $("#fancy_content").css({
          'top'		: 0,
          'right'		: 0,
          'bottom'	: 0,
          'left'		: 0,
          'width'		: '100%',
          'height'	: '100%'
        });
      }

      if ($("#fancy_outer").is(":visible") && width == $("#fancy_outer").width() && height == $("#fancy_outer").height()) {
        $("#fancy_content").fadeOut("fast", function() {
          $("#fancy_content").empty().append($(value)).fadeIn("normal", function() {
            _finish();
          });
        });

        return;
      }

      var w = $.fn.fancybox.getViewport();

      /*Calcul si fluide*/
      if (width < 100) {

      widthPercToPix = 55*w[0]/100;
      heightPercToPix = 65*w[1]/100;
      var itemLeft	= (widthPercToPix + 36)	> w[0] ? w[2] : (w[2] + Math.round((w[0] - widthPercToPix - 36) / 2));
      var itemTop		= (heightPercToPix + 50)	> w[1] ? w[3] : (w[3] + Math.round((w[1] - heightPercToPix - 50) / 2));

      var itemOpts = {
        'left':		itemLeft,
        'top':		itemTop,
        'width':	width + '%',
        'height':	height + '%'
      };

      /*Calcul si normal*/

      } else {

      var itemLeft	= (width + 36)	> w[0] ? w[2] : (w[2] + Math.round((w[0] - width - 36) / 2));
      var itemTop		= (height + 50)	> w[1] ? w[3] : (w[3] + Math.round((w[1] - height - 50) / 2));

      var itemOpts = {
        'left':		itemLeft,
        'top':		itemTop,
        'width':	width + 'px',
        'height':	height + 'px'
      };

      }

      if ($("#fancy_outer").is(":visible")) {
        $("#fancy_content").fadeOut("normal", function() {
          $("#fancy_content").empty();
          $("#fancy_outer").animate(itemOpts, opts.zoomSpeedChange, opts.easingChange, function() {
            $("#fancy_content").append($(value)).fadeIn("normal", function() {
              _finish();
            });
          });
        });

      } else {

        if (opts.zoomSpeedIn > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
          $("#fancy_content").empty().append($(value));

          var orig_item	= opts.itemArray[opts.itemCurrent].orig;
          var orig_pos	= $.fn.fancybox.getPosition(orig_item);

          $("#fancy_outer").css({
            'left':		(orig_pos.left - 18) + 'px',
            'top':		(orig_pos.top  - 18) + 'px',
            'width':	$(orig_item).width(),
            'height':	$(orig_item).height()
          });

          if (opts.zoomOpacity) {
            itemOpts.opacity = 'show';
          }

          $("#fancy_outer").animate(itemOpts, opts.zoomSpeedIn, opts.easingIn, function() {
            _finish();
          });

        } else {

          $("#fancy_content").hide().empty().append($(value)).show();
          $("#fancy_outer").css(itemOpts).fadeIn("normal", function() {
            _finish();
          });
        }
      }
    };

    function _set_navigation() {
      if (opts.itemCurrent != 0) {
        $("#fancy_left, #fancy_left_ico").unbind().bind("click", function(e) {
          e.stopPropagation();

          opts.itemCurrent--;
          _change_item();

          return false;
        });

        $("#fancy_left").show();
      }

      if (opts.itemCurrent != ( opts.itemArray.length -1)) {
        $("#fancy_right, #fancy_right_ico").unbind().bind("click", function(e) {
          e.stopPropagation();

          opts.itemCurrent++;
          _change_item();

          return false;
        });

        $("#fancy_right").show();
      }
    };

    function _finish() {
      _set_navigation();

      _preload_neighbor_images();

      $(document).keydown(function(e) {
        if (e.keyCode == 27) {
          $.fn.fancybox.close();
          $(document).unbind("keydown");

        } else if(e.keyCode == 37 && opts.itemCurrent != 0) {
          opts.itemCurrent--;
          _change_item();
          $(document).unbind("keydown");

        } else if(e.keyCode == 39 && opts.itemCurrent != (opts.itemArray.length - 1)) {
          opts.itemCurrent++;
          _change_item();
          $(document).unbind("keydown");
        }
      });

      if (opts.centerOnScroll) {
        $(window).bind("resize scroll", $.fn.fancybox.scrollBox);
      } else {
        $("div#fancy_outer").css("position", "absolute");
      }

      if (opts.hideOnContentClick) {
        $("#fancy_wrap").click($.fn.fancybox.close);
      }

      $("#fancy_overlay, #closePopupImage").bind("click", $.fn.fancybox.close);

      $("#fancy_overlay, #closePopup").bind("click", $.fn.fancybox.close);



      $("#closePopup").show();

      $("#closePopupImage").show();

      if (opts.itemArray[ opts.itemCurrent ].title !== undefined && opts.itemArray[ opts.itemCurrent ].title.length > 0) {
        $('#fancy_title div').html(opts.itemArray[ opts.itemCurrent ].title);
        $('#fancy_title').show();
      }

      if (opts.overlayShow && isIE) {
        $('embed, object, select', $('#fancy_content')).css('visibility', 'visible');
      }

      if ($.isFunction(opts.callbackOnShow)) {
        opts.callbackOnShow();
      }

      busy = false;
    };

    return this.unbind('click').click(_initialize);
  };

  $.fn.fancybox.scrollBox = function() {
    var pos = $.fn.fancybox.getViewport();

    $("#fancy_outer").css('left', (($("#fancy_outer").width()	+ 36) > pos[0] ? pos[2] : pos[2] + Math.round((pos[0] - $("#fancy_outer").width()	- 36)	/ 2)));
    $("#fancy_outer").css('top',  (($("#fancy_outer").height()	+ 50) > pos[1] ? pos[3] : pos[3] + Math.round((pos[1] - $("#fancy_outer").height()	- 50)	/ 2)));
  };

  $.fn.fancybox.getNumeric = function(el, prop) {
    return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
  };

  $.fn.fancybox.getPosition = function(el) {
    var pos = el.offset();

    pos.top	+= $.fn.fancybox.getNumeric(el, 'paddingTop');
    pos.top	+= $.fn.fancybox.getNumeric(el, 'borderTopWidth');

    pos.left += $.fn.fancybox.getNumeric(el, 'paddingLeft');
    pos.left += $.fn.fancybox.getNumeric(el, 'borderLeftWidth');

    return pos;
  };

  $.fn.fancybox.showIframe = function() {
    $(".fancy_loading").hide();
    $("#fancy_frame").show();
  };

  $.fn.fancybox.getViewport = function() {
    return [$(window).width(), $(window).height(), $(document).scrollLeft(), $(document).scrollTop() ];
  };

  $.fn.fancybox.animateLoading = function() {
    if (!$("#fancy_loading").is(':visible')){
      clearInterval(loadingTimer);
      return;
    }

    $("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');

    loadingFrame = (loadingFrame + 1) % 12;
  };

  $.fn.fancybox.showLoading = function() {
    clearInterval(loadingTimer);

    var pos = $.fn.fancybox.getViewport();

    $("#fancy_loading").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();
    $("#fancy_loading").bind('click', $.fn.fancybox.close);

    loadingTimer = setInterval($.fn.fancybox.animateLoading, 66);
  };

  $.fn.fancybox.close = function() {
    busy = true;

    $(imagePreloader).unbind();

    $("#fancy_overlay, #closePopupImage").unbind();

    $("#fancy_overlay, #closePopup").unbind();

    if (opts.hideOnContentClick) {
      $("#fancy_wrap").unbind();
    }

    $("#closePopup, #closePopupImage, .fancy_loading, #fancy_left, #fancy_right, #fancy_title").hide();

    if (opts.centerOnScroll) {
      $(window).unbind("resize scroll");
    }

    __cleanup = function() {
      $("#fancy_overlay, #fancy_outer").hide();

      if (opts.centerOnScroll) {
        $(window).unbind("resize scroll");
      }

      if (isIE) {
        $('embed, object, select').css('visibility', 'visible');
      }

      if ($.isFunction(opts.callbackOnClose)) {
        opts.callbackOnClose();
      }

      busy = false;
    };

    if ($("#fancy_outer").is(":visible") !== false) {
      if (opts.zoomSpeedOut > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
        var orig_item	= opts.itemArray[opts.itemCurrent].orig;
        var orig_pos	= $.fn.fancybox.getPosition(orig_item);

        var itemOpts = {
          'left':		(orig_pos.left - 18) + 'px',
          'top': 		(orig_pos.top  - 18) + 'px',
          'width':	$(orig_item).width(),
          'height':	$(orig_item).height()
        };

        if (opts.zoomOpacity) {
          itemOpts.opacity = 'hide';
        }

        $("#fancy_outer").stop(false, true).animate(itemOpts, opts.zoomSpeedOut, opts.easingOut, __cleanup);

      } else {
        $("#fancy_outer").stop(false, true).fadeOut("fast", __cleanup);
      }

    } else {
      __cleanup();
    }

    return false;
  };

  $.fn.fancybox.build = function() {
    var html = '';

    html += '<div id="fancy_overlay"></div>';

    html += '<div id="fancy_wrap">';

    html += '<div class="fancy_loading" id="fancy_loading"><div></div></div>';

    html += '<div id="fancy_outer">';

    html += '<div id="fancy_inner">';

    html +=  '<div id="fancy_bg"><div class="fancy_bg fancy_bg_n"></div><div class="fancy_bg fancy_bg_ne"></div><div class="fancy_bg fancy_bg_e"></div><div class="fancy_bg fancy_bg_se"></div><div class="fancy_bg fancy_bg_s"></div><div class="fancy_bg fancy_bg_sw"></div><div class="fancy_bg fancy_bg_w"></div><div class="fancy_bg fancy_bg_nw"></div></div>';

    html += '<div class="naviguer">';
	
	html +=  '<a href="javascript:;" id="fancy_left"><span class="fancy_ico" id="fancy_left_ico"></span></a>';
	
	html += '<div id="closePopupImage"></div>';
   
   	html +=  '<a href="javascript:;" id="fancy_right"><span class="fancy_ico" id="fancy_right_ico"></span></a>';

    html += '</div><!-- fin de la naviguation entre images -->';
	
	html += '<div id="fancy_content"></div>';

    html +=  '<div id="fancy_title"></div>';

    html += '</div>';

    html += '</div>';

    html += '</div>';

    $(html).appendTo("body");

    $('<table cellspacing="0" cellpadding="0" border="0"><tr><td class="fancy_title" id="fancy_title_left"></td><td class="fancy_title" id="fancy_title_main"><div></div></td><td class="fancy_title" id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');

    if (isIE) {
      $("#fancy_inner").prepend('<iframe class="fancy_bigIframe" scrolling="no" frameborder="0"></iframe>');
      $("#closePopup, #closePopupImage, .fancy_bg, .fancy_title, .fancy_ico").fixPNG();
    }
  };

  $.fn.fancybox.defaults = {
    padding				:	10,
    imageScale			:	true,
    zoomOpacity			:	false,
    zoomSpeedIn			:	0,
    zoomSpeedOut		:	0,
    zoomSpeedChange		:	300,
    easingIn			:	'swing',
    easingOut			:	'swing',
    easingChange		:	'swing',
    frameWidth			:	425,
    frameHeight			:	355,
    overlayShow			:	true,
    overlayOpacity		:	0.3,
    hideOnContentClick	:	true,
    centerOnScroll		:	true,
    itemArray			:	[],
    callbackOnStart		:	null,
    callbackOnShow		:	null,
    callbackOnClose		:	null
  };

  $(document).ready(function() {
    $.fn.fancybox.build();
  });

})(jQuery);