(function($) {

    //Links Effect for Teasers
    $.fn.links = function(options) {

		// Default settings
		var settings = {			
			hoverclass:'selected-box', 		// class added to parent element on hover/focus
			follow: 'auto'				// follow master link on click? : 'auto',true,false
		};
		if(options) {
			$.extend(settings, options);
		}
		$(this).filter(function(){
			 return $('a',this).length > 0;

		}).css('cursor', 'pointer').each(function(i){

			// store element references
			var big = $(this).data('links',{hovered:false,focused:false});
			var links = {
				all: $('a',this),
				big: $(this),
				master: $('a:first',this).data('links',{status:'master'}),
				other: $('a',this).not($('a:first',this)).data('links',{status:'other'})
			};


			$('a',this).andSelf().each(function(){
				var newdata = $.extend($(this).data('links'),links);
				$(this).data('links',newdata);
			});


		// events on links element

		big
			.mouseover(function(event){
				window.status = $(this).data('links').master.get(0).href;
				$(this).addClass(settings.hoverclass);
				$(this).data('links').hovered = true;
			})
			.mouseout(function(event){
				window.status = '';
				if(!$(this).data('links').focused)
				{
					$(this).removeClass(settings.hoverclass);
				}
				$(this).data('links').hovered = false;
			})
			.bind('click',function(event){

				// if clicked direct or non-link
				if(!$(event.target).closest('a').length)
				{
					$(this).data('links').master.trigger({type:'click',source:'links'});
					event.stopPropagation();
				}
			});

			// click/focus/blur event on master (first) link within links

			links.master
			.bind('click',function(event){
				if(event.source == 'links')
				{
					if(settings.follow === true || settings.follow == 'auto' && event.result !== false)
					{
						window.location = $(this).attr('href');
					}
					else
					{
						event.stopPropagation();
					}
				}
			});
		});
		return this;
	};


    //easySlider -- Slideshow
    $.fn.easySlider = function(options){

        // default configuration properties
        var defaults = {
            prevId: 		'prevBtn',
            prevText: 		'&nbsp;',
            nextId: 		'nextBtn',
            nextText: 		'&nbsp;',
            orientation:	'', //  'vertical' is optional;
            speed: 			500
        };

        var options = $.extend(defaults, options);

        return this.each(function() {
            obj = $(this);
            var s = $("li", obj).length;
            var w = obj.width();
            var h = obj.height();
            var ts = s-1;
            var t = 0;
            var vertical = (options.orientation == 'vertical');
            $("ul", obj).css('width',s*w);
            if(!vertical) $("li", obj).css('float','left');
            $(obj).after('<span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span> <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>');
            $("a","#"+options.prevId).hide();
            $("a","#"+options.nextId).hide();
            $("a","#"+options.nextId).click(function(){
                animate("next");
                if (t>=ts) $(this).fadeOut();
                $("a","#"+options.prevId).fadeIn();
            });
            $("a","#"+options.prevId).click(function(){
                animate("prev");
                if (t<=0) $(this).fadeOut();
                $("a","#"+options.nextId).fadeIn();
            });
            function animate(dir){
                if(dir == "next"){
                    t = (t>=ts) ? ts : t+1;
                } else {
                    t = (t<=0) ? 0 : t-1;
                };
                if(!vertical) {
                    p = (t*w*-1);
                    $("ul",obj).animate(
                    {
                        marginLeft: p
                    },
                    options.speed
                    );
                } else {
                    p = (t*h*-1);
                    $("ul",obj).animate(
                    {
                        marginTop: p
                    },
                    options.speed
                    );
                }
            };
            if(s>1) $("a","#"+options.nextId).fadeIn();
        });

    };
})(jQuery);


