jQuery.fn.scroller = function(type,urls,dims,links)
{
    this.each(function(){ new scroller(jQuery(this),type,urls,dims,links); });
}

function scroller(target,type,urls,dimensions,links)
{
    var _this = this;
    if(typeof dimensions != "undefined"){
        this._width = (typeof dimensions.width != "undefined")?dimensions.width: "";
        this._height = (typeof dimensions.height != "undefined")? dimensions.height: "";
    }
    
    var img_src = "<img/>";
    var flash_src = '<object><param name="movie" value=""><embed src=""></embed></object>';

    this.target = target;
    function setItem()
    {
        if(type == "image")
        {
            if(typeof(links)!="undefined"){
                _this.obj.attr('href',links[_this.number]);
                jQuery('img',_this.obj).attr('src',_this.data[_this.number]);
            } else {
                _this.obj.attr('src',_this.data[_this.number]);
            }
        }else if(type == "flash"){
            jQuery("param[name=movie]",_this.obj).attr("value",_this.data[_this.number]);
            jQuery("embed",_this.obj).attr("src",_this.data[_this.number]);
        }
        else if(type == "video"){
            _this.player.play(_this.data[_this.number]);
        }
        updateStat();
    }
    function enableSmth(object,val){
        if(val){
            object.addClass("pointer");
        }else{
            object.removeClass("pointer");
        }
    }
    function enablePrev(val) {
        enableSmth(jQuery(".prev a",target),val);
    }
    function enableNext(val) {
        enableSmth(jQuery(".next a",target),val);
    }
    function updateStat(){
        jQuery(".stat span",target).html(String(_this.number+1)+" / "+String(_this.max_number+1));
    }
    function createHtml(type){
        target.append('<div><div class="prev"><a>&laquo;</a></div><div class="content"></div><div class="next"><a>&raquo;</a></div></div><div class="stat"><span></span></div>')
        if(type == "image") {
            var src = img_src;
            if(typeof(links)!="undefined")src = '<a href="">'+src+'</a>'
            _this.obj = jQuery(src).appendTo(jQuery(".content",target));
//            if(_this._width){
//                jQuery(".content",target).width(_this._width+"px");
//            }
//            if(_this._height){
//                jQuery(".content",target).height(_this._height+"px");
//            }
        } else if(type == "flash") {
            _this.obj = jQuery(flash_src).appendTo(jQuery(".content",target) );
            if(_this._width){
                jQuery("object",_this.obj).width(_this._width+"px");
                jQuery("embed",_this.obj).width(_this._width+"px");
            }
            if(_this._height){
                jQuery("object",_this.obj).height(_this._height+"px");
                jQuery("embed",_this.obj).height(_this._height+"px");
            }
        } else if(type == "video"){
            var video_obj = jQuery(".content",target);
            video_obj.css("display","block");
            video_obj.width(_this._width+"px");
            video_obj.height(_this._height+"px");
            _this.player = $f(video_obj[0],"/js/flowplayer/flowplayer-3.1.1.swf",{
                plugins:{
                    controls: {
                        time: false,
                        volume: false,
                        mute: false,
                        fullscreen: false,
                        scrubber: false
                    }
                }
            });
        }

    }
    if(urls.length)
    {
        this.number = 0;
        this.data = urls;
        this.max_number = _this.data.length - 1;

        createHtml(type);
        setItem();

        $(".prev a",target).click(function(){
            if (_this.number > 0) {
                _this.number--;
                setItem();
                enableNext(true);
            }
            if (_this.number == 0) {
                enablePrev(false);
            }
        });
        var anext =$(".next a",target).click(function(){
            if (_this.number < _this.max_number) {
                _this.number++;
                setItem();
                enablePrev(true);
            }
            if (_this.number == _this.max_number) {
                enableNext(false);
            }
        });
        if(this.max_number > 1)anext.addClass("pointer");
    }
}
