function GfxSlider(image_paths,image_holder,controls,label) {
	var label = label;
	var image_paths = image_paths;
	var image_holder = image_holder;
	var controls = controls;
	var imageCounter = image_paths.length;
	var position = 1;
	var $holder = $("#" + image_holder);
	var $controlholder = (controls)? $("#gfx_control"):null;
	var slidetimer = null;
	var tickertimeout = null;
	var text = null;
	var self = this;
	var runninggfx = 0; // pocet soucasne bezicich fadeInu
	//promena kontrolujici kolizi vice fadeInu kdy obrazek ZE ktereho se faduje se ma 
	//zaroven DO neho fadovat tzn fadeIn 
	var fadefrom = new Array(); 
	var nothide = false;
	this.init = function() {
		$element =  $holder.find("img:first-child");
		$labelel = null;
		if (label) {
			$labelel = $("#"+label + " div:first-child");
			text = $labelel.html();
			 $("#"+label).append("<div id=\"gfx_label_container\">" + text + "</div>");
			 $("#gfx_label_container").show();
		}
		for(i=1;i<=imageCounter;i++){
			if (label) {
				$labelel.attr("id","gfx_label_" + i).hide();
				$labelel = $labelel.next();
			}
			$element.attr("id","gfx_img_" + i);
			$element.css("z-index","5"); //better to set in css file
			$element.css("position","absolute"); //better to set in css file
			if(i==1) $element.show();
			else  $element.hide();
			$element = $element.next();
		}
		if(controls){
			for(i=1;i<=imageCounter;i++){
				if (i==1) $('<a id="gfx_control_' + i + '"><img  src="images/gfx_butts.png" alt="slide" /></a>').appendTo($controlholder);
				else $('<a id="gfx_control_' + i + '"><img  src="images/gfx_butt.png" alt="slide" /></a>').appendTo($controlholder);
			}
		}
	}
	this.textShower = function(el,pos){
		ctext=text.substring(0,pos)+(pos%2?'-':'_');
		  $(el).html(ctext);
		  if(pos>=(text.length-2))
		   $(el).html(text);
		  else
		   tickertimeout = setTimeout(function(){
			   self.textShower(el,pos+1);
		   },25);
	}
	this.slideControl = function(from,to) {
		if($.browser.msie && parseFloat($.browser.version) < 7){
			$controlholder.find("a#gfx_control_" + from + " img").replaceWith('<img  src="images/gfx_butt.png" alt="slide" />');
			$controlholder.find("a#gfx_control_" + to + " img").replaceWith('<img  src="images/gfx_butts.png" alt="slide" />');
		}else{
			$controlholder.find("a#gfx_control_" + from + " img").attr("src","images/gfx_butt.png");
			$controlholder.find("a#gfx_control_" + to + " img").attr("src","images/gfx_butts.png");
		}
	}
	
	this.slideImage = function(from,to) {
		runninggfx++;
		fadefrom.push(from);
		//if(runninggfx == 2) alert(fadefrom[0] + ";" + fadefrom[1]); 
		
		if (runninggfx > 1) $holder.find("img#gfx_img_" + to).css("z-index",(parseInt($holder.find("img#gfx_img_" + from).css("z-index"))+1)+ "");
		$holder.find("img#gfx_img_" + to).fadeIn("slow",function(){
			$holder.children("#gfx_img_kill_" + from).remove();
			fadefrom.shift();
			if(($holder.find("img#gfx_img_" + from).attr("class"))!="new"){
				$holder.find("img#gfx_img_" + to).css("z-index","-5");
				$holder.find("img#gfx_img_" + from).css("z-index","5");
				$holder.find("img#gfx_img_" + from).hide();
			}
			else $holder.find("img#gfx_img_" + from).removeAttr("class");
			runninggfx--;
		});
		
	}
	
	this.run = function() {
		
		nextpos = (position == imageCounter)? 1:position + 1;
		this.slideImage(position,nextpos);
		if(controls) self.slideControl(position,nextpos);
		if(label) {
			clearTimeout(tickertimeout);
			text = $("#" + label+" div#gfx_label_" + nextpos).html();
			self.textShower("#" + label+" div#gfx_label_container",3);
		}
		position = nextpos;
		slidetimer = setTimeout(function(){
			self.run();
		},6000);
	}
	this.start = function() {
		slidetimer = setTimeout(function() {
			self.run();
		},4000);
	
	}
	
	this.fadefromtest = function(value){
		for (i=0; i < fadefrom.length; i++) {
			if (fadefrom[i] == value) return true;
		}
		return false;
	}
	$controlholder.find("a").live("click",function(){
		clearTimeout(slidetimer);
		nextpos = parseInt($(this).attr("id").substr(12));
		fadetest = self.fadefromtest(nextpos);
		if ((nextpos!=position)&&(!fadetest)){
			self.slideImage(position,nextpos );
			self.slideControl(position, nextpos);
			if(label) {
				clearTimeout(tickertimeout);
				text = $("#" + label+" div#gfx_label_" + nextpos).html();
				self.textShower("#" + label+" div#gfx_label_container",4);
			}
			position = nextpos;
		}else if (fadetest) {
			if(!($holder.find("img#gfx_img_kill_" + nextpos ).length)){
				path = $holder.find("img#gfx_img_" + nextpos).attr("src");
				$holder.find("img#gfx_img_" + nextpos).attr("id","gfx_img_kill_"  + nextpos);
				$holder.find("img#gfx_img_kill_" + nextpos).before($('<img  src="'+ path +'" class="new" alt="slide" id="gfx_img_' + nextpos + '" />').css({"position":"absolute"}).hide());
				//$("#nadpis").html($("#nadpis").html() + "jo");
				self.slideImage(position,nextpos );
				self.slideControl(position, nextpos);
				if(label) {
					clearTimeout(tickertimeout);
					text = $("#" + label+" div#gfx_label_" + nextpos).html();
					self.textShower("#" + label+" div#gfx_label_container",4);
				}
				position = nextpos;
			}
		}
	});
	
	
} 




