function Carousel(objstr, args)
{
	obj = document.getElementById(objstr);
	obj.clear = function()
	{
		//alert(this.list.id)
		$(this.list).empty();
	}
	obj.prevPage = function()
	{
		if(this.start - this.size < 0)
		{
			this.start = (this.start + this.data.length) - this.size;
		}else{
			this.start = this.start - this.size;
		}
		this.showPage();
		
	}
	
	obj.showPage = function()
	{
		this.clear();
		for(i = this.start; i < this.start + this.size;i++)
		{
			var item = this.data[i-1];
			if(item === undefined)
			{
				
			}
			this.addItem(item);
		}
		this.setInfo();
	}
	
	obj.setInfo = function()
	{
		this.info.html(this.start + " thru "+(this.start+this.size-1) + " of " + this.data.length);
	}
	obj.nextPage = function()
	{
		if(this.start + this.size > this.data.length)
		{
			this.start = (this.start - this.data.length) + this.size;
			//alert(this.start);
		}else{
			this.start = this.start + this.size;
		}
		this.showPage();
	}
	obj.addItem = function(item)
	{
		//alert(i);
		var new_li = $(document.createElement('li')).appendTo(this.list);
		this.newItem(item, new_li);
		
	}
	
	obj.newItem = function(item, li)
	{
	}
	
	obj.jsoncallback = function(data)
	{
		this.data = data;
		this.showPage();
		this.dataLoaded();
	}
	
	obj.dataLoaded = function()
	{
	}
	obj.getData = function()
	{
		//alert(this.url);
		jQuery.getJSON
		(this.url,
			//this.jsoncallback
			$.context(this).callback('jsoncallback')
		);
	};
 	
 	obj.tbl = $(document.createElement('table')).appendTo(obj);
 	obj.win_tr = $(document.createElement('tr')).appendTo(obj.tbl);
 	obj.win_td1 = $(document.createElement('td')).appendTo(obj.win_tr);
 	obj.win_td2 = $(document.createElement('td')).appendTo(obj.win_tr).attr('id', 'carousel_win');
 	obj.win_td3 = $(document.createElement('td')).appendTo(obj.win_tr);
 	obj.prev = $(document.createElement('span')).appendTo(obj.win_td1)
	obj.prev.bind('click', {},$.context(obj).callback('prevPage'));
 	obj.prev.html('Prev Page');
 	obj.prev.attr('id', 'prev');
	obj.list = $(document.createElement('ul')).appendTo(obj.win_td2).attr('id', 'carousel_ul');
 	//alert(obj.list)
 	
 	obj.next = $(document.createElement('span')).appendTo(obj.win_td3);//.attr('href', '#');
 	obj.next.bind('click', {},$.context(obj).callback('nextPage'));
 	obj.next.html('Next Page');
 	obj.next.attr('id', 'next');
 	obj.info = $(document.createElement('div')).appendTo(obj);
 	if(args)
 	{
 		args.size ? obj.size = args.size : obj.size = 5;
	 	args.url ? obj.url = args.url : '';
	 	args.callback ? obj.callback = args.callback : '';
	 	//obj.getData();
	}else{
		obj.size = 5;
		
	}
	obj.start = 1;
	return obj;
}

    // $.context
    jQuery.extend(
    {
      context: function (context)
      {
        var co = 
        {
          callback: function (method)
          {
            if (typeof method == 'string') method = context[method];
            var cb = function () { return method.apply(context, arguments); }
            return cb;
          }
        };
        return co;
      }
    }); 
