function PremiumSlider(items) {
	
	this.items = items;
	var y = 20;
	var s_elements = new Array();
	var b_elements = new Array();
	var slidesize = new Array();
	var s_active;
	var self = this;
	var imgarr = new Array();
	var loadedImages = 0;
	var imagesCount = 0;
	var isScrolling = false;
	
	
	var initHTML = function() {
		
		document.write('<div style="width:480px;height:210px;overflow:hidden;position:relative;">');

			document.write('<div id="content" style="position:absolute;background-color:white;width:10000px;"></div>');

			document.write('<div id="slider_left" style="width:40px;height:230px;position:absolute;background-image:url(\'images/slider/leftside.png\');background-repeat:no-repeat;">');
				document.write('<div id="arrowleft" style="padding-top:100px;"><a href="javascript:;" onClick="slider.scroll_prev();" style="outline:none;"><img src="images/slider/leftbutton.png" border="0"/></a></div>');
			document.write('</div>');
			
			document.write('<div id="slider_right" style="width:40px;height:230px;position:absolute;right:0px;margin:auto;background-image:url(\'images/slider/rightside.png\');background-repeat:no-repeat;text-align:right;">');
				document.write('<div id="arrowright" style="padding-top:100px;"><a href="javascript:;" onClick="slider.scroll_next();" style="outline:none;"><img src="images/slider/rightbutton.png" border="0"/></a></div>');
			document.write('</div>');
			
			
			
		document.write('</div>');
	}
	
	this.preload = function() {		
		for(i=0;i<this.items.length;i++) {
	
				img = new Image();
				img.src = this.items[i].getImage();
				
				if(img.complete) {
					imgarr.push(img);
	
					update();
					
				} else {
					img.onabort = function() { update(); };
					img.onerror = function() { update(); };
					img.onload = function() { update(); };
					imgarr.push(img);
				}
		}
		
	}
	
	var update = function() {
		loadedImages++;
		
		if(loadedImages == imagesCount) {
			fill();	
		}
	}
	
	this.init = function() {
			
		imagesCount = this.items.length;
			
		initHTML();
		
		if(loadedImages == imagesCount) {
			fill();
		} else {
			this.preload();
		}
		
	}
	
	var fill = function() {
		//initialize
		for(i=0;i<this.items.length;i++) {
			document.getElementById('content').innerHTML += '<div id="c_'+i+'" style="float:left;display:inline;margin-left:40px;margin-bottom:100px;"><div style="color:#999966;font-size:11px;font-weight:bold;">'+this.items[i].getText()+'<br /><a href="'+this.items[i].getLink()+'"><img id="b_'+i+'" src="'+this.items[i].getImage()+'" border="0" style="margin-top:20px;"></a></div></div>';
		}
		
		
		for(i=0;i<this.items.length;i++) {
			if(document.getElementById('c_'+i)) {
				
					s_elements[i] = document.getElementById('c_'+i);
					//b_elements[i] = imgarr[i].width+40;
					if(document.getElementById('c_'+i).offsetWidth > 0) {
						b_elements[i] = document.getElementById('c_'+i).offsetWidth+40;
					} else {
						b_elements[i] = imgarr[i].width+40+20;		///not precise...magic number :-(
					}
				//b_elements[i] = document.getElementById('b_'+i).width;
				
			} else {
				break;
			}
		}
		
		slidesize[0] = y;
		for(i=1;i<this.items.length;i++) {
			slidesize[i] = (slidesize[i-1]-b_elements[i-1]);
		}
		
		var position = Math.floor(this.items.length/2);
		setPosition(position);
	}
	
	var setPosition = function(pos) {
		if(pos != 0) {
			pos--;	
		}
		s_active = pos;
		y = slidesize[pos];
		document.getElementById('content').style.marginLeft = y;	
	}
	
	this.scroll_prev = function () {
		if(isScrolling) return;
		
		if(s_active > 0) {
		
			s_active--;
			this.scrollitem(y,slidesize[s_active],false,1);
			
			
		}
	}
	
	this.scroll_next = function() {
		if(isScrolling) return;
		
		if(s_active < (s_elements.length-1)) {
			s_active++;
			this.scrollitem(y,slidesize[s_active],true,1);
			
		}
	}
	
	this.scrollitem = function (start,end,down,speed) {	
		
		start = parseInt(start);
		end = parseInt(end);
	
		
		if(down) {
			if(start > end) {

					start = start-speed;
					
					if(start-60 > end) {
						speed++;
					} else {
						if(speed > 1) {
							speed--;
						}
					}
					
					y = start;
					setTimeout(function() {self.scrollitem(start,end,down,speed)},30); 
					document.getElementById('content').style.marginLeft = start;
					isScrolling = true;
					
			} else {
				isScrolling = false;
			}
			
		} else {
		
			if(start < end) { 
					start = start+speed;
					
					if(start+60 < end) {
						speed++;
					} else {
						if(speed > 1) {
							speed--;
						}
					}
					
					y = start;
					speed++;
					setTimeout(function() {self.scrollitem(start,end,down,speed)},30); 
					document.getElementById('content').style.marginLeft = start;
					isScrolling = true;
			} else {
				isScrolling = false;	
			}

		}
	}
	
	
}
