jQuery.fn.gisTeaserGallery = function(options)
{

//default options
    var defaults = {

        /*buttonLeftSrc       : 'http://gis2.netzpepper.de/images/galleryTeaser/galleryButtonLeft.png',
        buttonRightSrc      : 'http://gis2.netzpepper.de/images/galleryTeaser/galleryButtonRight.png',
        buttonLeftOnSrc     : 'http://gis2.netzpepper.de/images/galleryTeaser/galleryButtonLeftOn.png',
        buttonRightOnSrc    : 'http://gis2.netzpepper.de/images/galleryTeaser/galleryButtonRightOn.png',*/

        buttonLeftSrc       : 'http://gis2.netzpepper.de/images/frontend/gallery-left.png',
        buttonRightSrc      : 'http://gis2.netzpepper.de/images/frontend/gallery-right.png',
        buttonLeftOnSrc     : 'http://gis2.netzpepper.de/images/frontend/gallery-left-hover.png',
        buttonRightOnSrc    : 'http://gis2.netzpepper.de/images/frontend/gallery-right-hover.png',

        speed               : 500,
        slideDirection      : 'reverse'
    };

    if(jQuery.browser.version == "6.0") {
      var defaults = {
        buttonLeftSrc       : 'http://gis2.netzpepper.de/images/frontend/ie6-gallery-left.png',
        buttonRightSrc      : 'http://gis2.netzpepper.de/images/frontend/ie6-gallery-right.png',
        buttonLeftOnSrc     : 'http://gis2.netzpepper.de/images/frontend/ie6-gallery-left-hover.png',
        buttonRightOnSrc    : 'http://gis2.netzpepper.de/images/frontend/ie6-gallery-right-hover.png',
        speed               : 500,
        slideDirection      : 'reverse'
      }
    }

    var opts = jQuery.extend(defaults, options);

    //if the animate is done
    var ready = true;

    this.each(function(){
        //actual image
        var actualImage = 0;
        //container
        var container = jQuery(this);
        //add wrapper
        container.wrapInner(document.createElement('div'));
        var wrapper = container.children('div:first');
        wrapper.css('position','absolute');

        function moveNext()
        {
            if(ready != true) return; //prev. anim is not done
            ready = false;
            var newPos = wrapper.position().left - allImages.eq(actualImage).outerWidth('margin');
            wrapper.animate({left:newPos}, opts.speed, function(){ready = true;});
            actualImage++;
            buttonsVisibility();
        }

        function movePrev()
        {
            if(ready != true) return; //prev. anim is not done
            ready = false;
            var newPos = wrapper.position().left + allImages.eq(actualImage).outerWidth('margin');
            wrapper.animate({left:newPos}, opts.speed, function(){ready = true;});
            actualImage--;
            buttonsVisibility();
        }

        function buttonsVisibility()
        {
            if(opts.slideDirection != 'reverse'){
                if(actualImage == 0){
                    buttonRight.hide();
                }else{
                    buttonRight.show();
                }
                if(actualImage >= allImages.length-1){
                    buttonLeft.hide();
                }else{
                    buttonLeft.show();
                }
            }else{
                if(actualImage == 0){
                    buttonLeft.hide();
                }else{
                    buttonLeft.show();
                }
                if(actualImage >= allImages.length-1){
                    buttonRight.hide();
                }else{
                    buttonRight.show();
                }
            }

        }

        function mouseover()
        {
            if(jQuery(this).attr('src') == opts.buttonLeftSrc) jQuery(this).attr('src', opts.buttonLeftOnSrc);
            if(jQuery(this).attr('src') == opts.buttonRightSrc) jQuery(this).attr('src', opts.buttonRightOnSrc);
        }

        function mouseout()
        {
            if(jQuery(this).attr('src') == opts.buttonLeftOnSrc) jQuery(this).attr('src', opts.buttonLeftSrc);
            if(jQuery(this).attr('src') == opts.buttonRightOnSrc) jQuery(this).attr('src', opts.buttonRightSrc);
        }

        //add buttons
        container.append('<img class="leftSwitch" src="' + opts.buttonLeftSrc + '" alt="zur&uuml;ck" title="zur&uuml;ck" />');
        container.append('<img class="rightSwitch" src="' + opts.buttonRightSrc + '" alt="weiter"  title="weiter" />');
        var buttonLeft = container.children('img[src=' + opts.buttonLeftSrc + ']:first');
        var buttonRight = container.children('img[src=' + opts.buttonRightSrc + ']:first');
        //buttons css
        /*
	 buttonLeft.css('position','absolute');
        buttonLeft.css('cursor','pointer');
        buttonLeft.css('padding','10px');
        buttonLeft.css('left','0');
        buttonLeft.css('top',(container.height()/2) - buttonLeft.outerHeight()/2);
        buttonRight.css('cursor','pointer');
        buttonRight.css('padding','10px');
        buttonRight.css('position','absolute');
        buttonRight.css('right','0');
        buttonRight.css('top',(container.height()/2) - buttonRight.outerHeight()/2);
	*/
        //buttons event handlers
        if(opts.slideDirection != 'reverse'){
            buttonLeft.bind('click',moveNext);
            buttonRight.bind('click',movePrev);
        }else{
            buttonLeft.bind('click',movePrev);
            buttonRight.bind('click',moveNext);
        }
        buttonLeft.bind('mouseover',mouseover);
        buttonLeft.bind('mouseout',mouseout);
        buttonRight.bind('mouseover',mouseover);
        buttonRight.bind('mouseout',mouseout);

        //all images
        var allImages = container.find('img').not(buttonLeft).not(buttonRight);
        var allImagesWidth = 0;

        //get all images width
        allImages.each(function(){
            var image = jQuery(this);
            allImagesWidth = allImagesWidth + (image.outerWidth('margin') * 2);
        });

        //set wrapper width
        wrapper.width(allImagesWidth);
        //check buttons visibility
        buttonsVisibility();

        return;

    });
}
