/**********************
 **** toggle usage ****
***********************/

(function($) {
    $.fn.fmToggleFadeSlide = function(options) {
        var defaults = {
            selector: ''
        , selector2: ''
        , elmntClick: ''
        , speed: 'normal'
        , heightInit: ''
        , idLink: ''
        , txtLinkInit: ''
        , txtLinkFinal: ''
        , idLinkImg: ''
        , classLinkInit: ''
        , classLinkFinal: ''
        , typeOverflow: 'visible'
        , heightFinal: null
        , isLnkHiddenInit: false
        , isMovieVideoPage: false
        },
		settings = $.extend({}, defaults, options);

        if ($(settings.selector2).height() > settings.heightInit && settings.isLnkHiddenInit) {
            $(settings.selector).height(settings.heightInit);
            $(settings.elmntClick).removeClass("hide");
        }
        else if ($(settings.selector2).height() < settings.heightInit) {
            $(settings.selector).height("");
            $(settings.elmntClick).addClass("hide");
        }

        $(settings.elmntClick).click(function() {
            doActionToggle();
        });

        function doActionToggle() {
            if ($(settings.selector).css('overflow') == 'hidden') {
                $overflow = settings.typeOverflow;
                $height = (settings.heightFinal != null) ? settings.heightFinal : $(settings.selector2).height(); //$(settings.selector2).css('height');
                $txtLink = settings.txtLinkFinal;
                //$classLink = settings.classLinkFinal;
            }
            else {
                $overflow = 'hidden';
                $height = settings.heightInit;
                $txtLink = settings.txtLinkInit;
                //$classLink = settings.classLinkInit;
            }
            $(settings.idLinkImg).toggleClass(settings.classLinkInit);
            $(settings.idLinkImg).toggleClass(settings.classLinkFinal);

            $(settings.idLink).text($txtLink);
            $(settings.selector).css('overflow', $overflow);

            if (settings.isMovieVideoPage) {
                $(settings.selector).animate({ height: $height }, settings.speed, function() { if ($height == 0) $(settings.selector).css("display", "none"); });
            }
            else
                $(settings.selector).animate({ height: $height }, settings.speed);
        }

        return this;
    }
})(jQuery);

(function($){
	$.fn.fmToggleReplaceTo = function(options){
	// <summary>
	// Toggle view
	// </summary>
	// <returns type="Object" />
	// <param name="" type=""></param>
	var defaults = {
		effect:		"fadeslidetoggle"
		,eltA:		"#div_elmnt_a"
		,eltALink:	"#link_elmnt_a"
		,eltB:		"#div_elmnt_b"
		,eltBLink:	"#link_elmnt_b"
	},
		settings = $.extend({}, defaults, options);

		$(settings.eltA + " " + settings.eltALink).show();

		$(settings.eltA + " " + settings.eltALink).click(function(event){
			$(settings.eltA).hide(1, function(){$(settings.eltB).effect({effectName: settings.effect})
			$(settings.eltB).removeClass("hide");$(settings.eltB + " " + settings.eltBLink).removeClass("hide");});
			event.preventDefault();
		});

		$(settings.eltB + " " + settings.eltBLink).click(function(event){
			$(settings.eltB).hide(1, function(){$(settings.eltA).effect({effectName: settings.effect})});
			event.preventDefault();
		});

		return this;
	}
})(jQuery);


(function($){
	$.fn.fmToggleReplace = function(options){
	// <summary>
	// Toggle view
	// </summary>
	// <returns type="Object" />
	// <param name="" type=""></param>
	var defaults = {
		effect:		"FadeSlideToggle"
		,eltA:		"#div_a"
		,eltALink:	"#linka"
		,eltB:		"#div_b"
		,eltBLink:	"#linkb"
	},
		settings = $.extend({}, defaults, options);

		$(settings.eltA + " " + settings.eltALink).show();
		$(settings.eltB + " " + settings.eltBLink).show();

		$(settings.eltA + " " + settings.eltALink).click(function(event){
			$(settings.eltA + " " + settings.eltALink).hide(1, function(){$(settings.eltB).effect({effectName: settings.effect});
			$(settings.eltB).removeClass("hide");$(settings.eltB + " " + settings.eltBLink).removeClass("hide");});
		////$(settings.eltB).effect({effectName: settings.effect});
			event.preventDefault();
		});

		$(settings.eltB + " " + settings.eltBLink).click(function(event){
			$(settings.eltA + " " + settings.eltALink).show();
			$(settings.eltB).effect({effectName: settings.effect});
			event.preventDefault();
		});

		return this;
	}
})(jQuery);


(function($) {
	$.fn.fmToggleReplaceInline = function(options) {
		// <summary>
		// Toggle view
		// </summary>
		// <returns type="Object" />
		// <param name="" type=""></param>
		var defaults = {
			effect: "FadeSlideToggle"
		, eltA: "#div_a"
		, eltALink: "#linka"
		, eltB: "#div_b"
		, eltBLink: "#linkb"
		},
		settings = $.extend({}, defaults, options);

		$(settings.eltA + " " + settings.eltALink).show();
		$(settings.eltB + " " + settings.eltBLink).show();

		$(settings.eltA + " " + settings.eltALink).click(function(event) {
			$(settings.eltA + " " + settings.eltALink).hide(1, function() { $(settings.eltB).effect({ effectName: settings.effect }); $(settings.eltB).css("display", "inline");  
			$(settings.eltB).removeClass("hide");$(settings.eltB + " " + settings.eltBLink).removeClass("hide");});
			////$(settings.eltB).effect({effectName: settings.effect});
			event.preventDefault();
		});

		$(settings.eltB + " " + settings.eltBLink).click(function(event) {
			$(settings.eltA + " " + settings.eltALink).show();
			$(settings.eltB).effect({ effectName: settings.effect });
			event.preventDefault();
		});

		return this;
	}
})(jQuery);



(function($){
	$.fn.fmToggleUnfold = function(options){
		var defaults = {
			effectA: 'FadeSlideToggle'
			,effectB: 'FadeSlideToggle'
			,elt: "#div_c"
			,eltLinkA: "#linkc"
			,eltLinkB: "#linkd"
			,initialHeight: null
			,finalHeight: null
			,initialWidth: null
			,finalWidth: null
		}
			,settings = $.extend({}, defaults, options);

		$(settings.elt + " " + settings.eltLinkA).show();
		$(this).height(300);
		$(this).css("overflow", "hidden");

		$(settings.elt + " " + settings.eltLinkA).click(function(event){
			$(settings.elt + " " + settings.eltLinkA).hide();//effect({effectName: settings.effect});

			if (settings.finalHeight != null)
				$(settings.elt).height(settings.finalHeight);
			if (settings.finalWidth != null)
				$(settings.elt).width(settings.finalWidth);

			$(settings.elt).hide();
			$(settings.elt).effect({effectName: settings.effectA});
			$(settings.elt + " " + settings.eltLinkB).show();
		});

		$(settings.elt + " " + settings.eltLinkB).click(function(event){
			$(settings.elt + " " + settings.eltLinkB).hide();

			if (settings.initialHeight != null)
				$(settings.elt).height(settings.initialHeight);
			if (settings.initialWidth != null)
				$(settings.elt).width(settings.initialWidth);

			$(settings.elt).hide();
			$(settings.elt).effect({effectName: settings.effectB});
			$(settings.elt + " " + settings.eltLinkA).show();
		});
	}
})(jQuery);

function retrieveHeightInit(elmnts, nbElmnts) {
    var totalHeightInit = 0;
    for (i = 0; i < nbElmnts; i++) {
        if ($(elmnts).eq(i).height() != null)
            totalHeightInit = totalHeightInit + $(elmnts).eq(i).height();
    }
    return totalHeightInit - 2;
}
