
function mySlide()
{
	this.config_file = '/js/my_slide/my_photos.txt';
	this.images_folder = '/imagen.php?ruta=imagenes';
	this.main_div = null;
	this.nav_div = null;
	this.cont_div = null;
	this.aPhotos = Array();
	this.num_photos = 0;
	this.actual_pos = 0;
	this.auto_slide = 0;
	this.interval = 7900;
	this.int_obj = null;

	/**
	* append_obj = Who is the parent object? 
 	*/
	this.createDomObj=function(type,id,css_class,html,append_obj)
	{
		obj = document.createElement(type);
		obj.id = id;
		obj.className = css_class;
		if(html != null)
			obj.innerHTML = html;
		if(append_obj != null)
			append_obj.appendChild(obj);	
		return obj;
	}	
	
	this.createLayout=function()
	{
		// creates main div element
		this.main_div = this.createDomObj("div","myslide-div","layout",null,null);
		// creates navigation bar
		this.nav_div = this.createDomObj("div","navbar-div","navbar",null,this.main_div);
		this.nav_div.style.display = "none";
		// elements of nav bar
		this.navelms_div = this.createDomObj("div","navelms-div","nav_elements",null,this.main_div);
		// description
		this.desc_div = this.createDomObj("div","desc-div","description",null,this.navelms_div);
		// next
//		this.next_div = this.createDomObj("div","next-div","next_button",null,this.navelms_div);		
		// back
//		this.back_div = this.createDomObj("div","back-div","back_button",null,this.navelms_div);
		// auto
//		this.auto_div = this.createDomObj("div","auto-div","auto_button",null,this.navelms_div);
		// alt
//		this.alt_div = this.createDomObj("div","alt-div","alt_label",null,this.navelms_div);
		this.navelms_div.style.display = "none";
		// sets div scope
		this.cont_div = document.getElementById("my_cont");
		if(this.cont_div == null)
			alert("Is need to be a div container with the id 'my_cont'");
		else
		{
			this.cont_div.appendChild(this.main_div);
			// read images file and preloads its
			this.my_readphotos();
			// adds event listeners
			this.my_events();	
		}		
	}

	this.my_readphotos=function()
	{
		file_content = this.read_file(this.config_file);
		this.aPhotos = file_content.split("\n");

		for(i=0; i<this.aPhotos.length;i++)
		{
			if(this.aPhotos[i].indexOf("|") > 0)
			{
		    if (document.images)
		    {
		    	aImgInfo = this.aPhotos[i].split("|"); 
	  			preload_image_object = new Image(300,220);		    	
				preload_image_object.src = this.images_folder+"/"+aImgInfo[1];
		    }
			}
		}
		this.num_photos = this.aPhotos.length;
		if(this.num_photos)
			this.showNextImage(0);

	}
	
	this.showNextImage = function(direction)
	{
		if(direction == 0)
			this.actual_pos = 0;			
		else if (direction == 1)
		{
			if(this.actual_pos+2 >= this.num_photos)
				this.actual_pos=0;
			else this.actual_pos++;
		}
		else
		{
			if(this.actual_pos-1 < 0)			
				this.actual_pos = this.num_photos-1;
			else this.actual_pos--;
		}

		sImgUrl = this.getImageUrl(this.actual_pos);
		sDesc = this.getImageDesc(this.actual_pos);
		this.main_div.style.backgroundImage = "url('"+sImgUrl+"')";
		this.desc_div.innerHTML = sDesc;
	}

	this.getImageUrl = function(i)
	{
		aImgInfo = this.aPhotos[i].split("|"); 
		return this.images_folder+"/"+aImgInfo[1];
	}

	this.getImageDesc = function(i)
	{
		aImgInfo = this.aPhotos[i].split("|"); 
		return aImgInfo[0];
	}
	
	this.my_events=function()
	{
		this.addEvent(this.main_div,'mouseover',this.showNavBar,true);
		this.addEvent(this.main_div,'mouseout',this.hideNavBar,true);
			
		//next
//		this.addEvent(this.next_div,'click',this.next,true);
		//back
//		this.addEvent(this.back_div,'click',this.back,true);
		//auto
//		this.addEvent(this.auto_div,'click',this.auto,true);
		//next
//		this.addEvent(this.next_div,'mouseover',this.alt_info,true);
		//auto
//		this.addEvent(this.auto_div,'mouseover',this.alt_info,true);		
		//back
//		this.addEvent(this.back_div,'mouseover',this.alt_info,true);

		
	}
	this.auto=function()
	{
		if(my_slide.auto_slide)
		{
			my_slide.auto_slide = 0;			
			clearInterval(my_slide.int_obj);
		}
		else
		{
			my_slide.auto_slide = 1;			
			my_slide.int_obj = setInterval("my_slide.showNextImage(1)",my_slide.interval);
		}
			
	}
	this.alt_info=function()
	{
		if(this.id == "next-div")
			document.getElementById('alt-div').innerHTML = "Siguiente";
		else if(this.id == "back-div")
			document.getElementById('alt-div').innerHTML = "Anterior";
		else if(this.id == "auto-div")
			document.getElementById('alt-div').innerHTML = "Auto on / off";
	}
	this.next=function()
	{
		my_slide.showNextImage(1);
	}
	this.back=function()
	{
		my_slide.showNextImage(-1);
	}
	this.showNavBar=function()
	{
		document.getElementById('navbar-div').style.display = "";
		document.getElementById('navelms-div').style.display = ""; 
		my_slide.auto();		
	}

	this.hideNavBar=function()
	{
		document.getElementById('navbar-div').style.display = "none";
		document.getElementById('navelms-div').style.display = "none";
		my_slide.auto();
	}
	

	this.addEvent=function(elemento,nomevento,funcion,captura)
	{
	  if (elemento.attachEvent)
	  {
	    elemento.attachEvent('on'+nomevento,funcion);
	    return true;
	  }
	  else
	  {  
	    if (elemento.addEventListener)
	    {
	      elemento.addEventListener(nomevento,funcion,captura);
	      return true;
	    }
	    else
	      return false;
	   }
	}
	
	this.read_file=function( url ) 
	{
      var req = null;
	   try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
        try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {
            try { req = new XMLHttpRequest(); } catch(e) {}
      }
    }
    
    if (req == null)
    	throw new Error('Imposible leer el fichero de imagenes.');
 
    req.open("GET", url, false);
    req.send(null);
 
    return req.responseText;
	}
}
 
