var jdvIScrollInstance;
idISModules = new Array();

function jdvIScroll(idModule, transDuration, animationFun)
{
	this.mCount = 0;
	
	this.transDuration = new Array();
	this.animationFun = new Array();
	//this.picArray = new Array();
	this.idModule = new Array();
	this.auto = new Array();
	this.scroll = new Array();
	this.maxScroll = new Array();
	
	this.count   = new Array();
	this.prev    = new Array();
	this.current = new Array();
	this.next    = new Array();

	this.curOpacity = new Array();
	
	this.initIScroll(idModule, transDuration, animationFun);
	
}


jdvIScroll.prototype.initIScroll=function(idModule, transDuration, animationFun)
{
	idISModules[this.mCount] = idModule;

	this.transDuration[this.mCount] = transDuration;
	this.animationFun[this.mCount] = animationFun;

	this.auto[this.mCount] = 0;
	
	this.count[this.mCount]   = 0;
	this.prev[this.mCount]    = 0;
	this.current[this.mCount] = 0;
	this.next[this.mCount]    = 1;

	this.curOpacity = 0;
	
	this.scroll[this.mCount] = new Fx.Scroll('jdv_iscroll'+idISModules[this.mCount]+'_wrap', {
		wait: false,
		duration: this.transDuration[this.mCount],
		offset: {'x': 0, 'y': 0},
		transition: this.animationFun[this.mCount]
		});
	

	
	picArray = document.getElementById('jdv_iscroll'+idISModules[this.mCount]+'_inner').getElementsByTagName("img");
	this.count[this.mCount] = picArray.length;
	index = idISModules.indexOf(parseInt(idModule),0);

	this.maxScroll[this.mCount] = 0
	
	$('jdv_iscroll'+idModule+'_inner').style.left = '0px';
	
	for(i = 0; i < picArray.length; i++)
	{

		slideEnd = $('slideEnd'+idModule).offsetLeft;
		widthWrap = $('jdv_iscroll'+idModule+'_wrap').offsetWidth;
		lastInside = slideEnd-$("jdv_iscroll"+idModule+"_content"+i).offsetLeft;

		if (lastInside > widthWrap){
			this.maxScroll[this.mCount] = i;
		}
		
		
		if ($('jdv_iscroll_bar'+idModule))
		$("jdv_iscroll"+idISModules[this.mCount]+"_link"+(i)).addEvent("click", function(event) {
		
			event = new Event(event).stop();
			
			start = "jdv_iscroll".length; 
			end = this.id.indexOf("_", start);
			
			idModule = this.id.substring(start, end);
					
					
			l = ("jdv_iscroll"+idModule+"_link").length;
			
			index = idISModules.indexOf(parseInt(idModule),0);
				
			
			slideEnd = $('slideEnd'+idModule).offsetLeft;
			widthWrap = $('jdv_iscroll'+idModule+'_wrap').offsetWidth;
			lastInside = slideEnd-$("jdv_iscroll"+idModule+"_content"+this.id.substring(l)).offsetLeft;
			offsetX = $("jdv_iscroll"+idModule+"_content"+this.id.substring(l)).offsetLeft-(widthWrap-lastInside);
			
			if (lastInside > widthWrap){
				jdvIScrollInstance.scroll[index].toElement("jdv_iscroll"+idModule+"_content"+this.id.substring(l));
			}else{
				
				jdvIScrollInstance.scroll[index].scrollTo(offsetX, 0);

			}
			
			jdvIScrollInstance.auto[index] = 0;
			
			jdvIScrollInstance.current[index] = this.id.substring(l);

			jdvIScrollInstance.setPrevNextImage(index);

		});

	}
	
	
	if ($("jdv_button_next"+idISModules[this.mCount])) {
		$("jdv_button_next"+idISModules[this.mCount]).addEvent("click", function(event) {
		
			event = new Event(event).stop();
			
			start = "jdv_button_next".length; 
			idModule = this.id.substring(start);
			
			index = idISModules.indexOf(parseInt(idModule),0);
			
			jdvIScrollInstance.auto[index] = 0;
			
			

			slideEnd = $('slideEnd'+idModule).offsetLeft;
			widthWrap = $('jdv_iscroll'+idModule+'_wrap').offsetWidth;
			lastInside = slideEnd-$("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.next[index]).offsetLeft;
			if (lastInside > widthWrap){
				//jdvIScrollInstance.scroll[index].toElement("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.next[index]);
				
				offsetX = $("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.next[index]).offsetLeft;
				jdvIScrollInstance.scroll[index].scrollTo(offsetX, 0);
				
				
				jdvIScrollInstance.current[index] = jdvIScrollInstance.next[index];
				
			}else{
				offsetX = $("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.next[index]).offsetLeft-(widthWrap-lastInside);
				jdvIScrollInstance.scroll[index].scrollTo(offsetX, 0);
				
			}
			jdvIScrollInstance.setPrevNextImage(index);
		});
	}
	
	
	if ($("jdv_button_prev"+idISModules[this.mCount])) {
		$("jdv_button_prev"+idISModules[this.mCount]).addEvent("click", function(event) {
		
		
			event = new Event(event).stop();
			
			start = "jdv_button_prev".length; 
			
			idModule = this.id.substring(start);
			
			index = idISModules.indexOf(parseInt(idModule),0);
			jdvIScrollInstance.auto[index] = 0;
			
			slideEnd = $('slideEnd'+idModule).offsetLeft;
			widthWrap = $('jdv_iscroll'+idModule+'_wrap').offsetWidth;
			

			lastInside = slideEnd-$("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.current[index]).offsetLeft;

			if (lastInside > widthWrap){

				offsetX = $("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.prev[index]).offsetLeft;
				jdvIScrollInstance.scroll[index].scrollTo(offsetX, 0);

				jdvIScrollInstance.current[index] = jdvIScrollInstance.prev[index];
				
			}else{
				offsetX = $("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.maxScroll[index]).offsetLeft;

				jdvIScrollInstance.scroll[index].scrollTo(offsetX, 0);

				jdvIScrollInstance.current[index] = jdvIScrollInstance.maxScroll[index]-1;
			}
			
			jdvIScrollInstance.setPrevNextImage(index);
		});
	}
	
	this.mCount++;
}


jdvIScroll.prototype.autoIScroll=function(idModule, transDelay)
//function autoIScroll(idModule, transDelay)
{

	index = idISModules.indexOf(parseInt(idModule),0);
	
	
	if (jdvIScrollInstance.auto[index]) {

		slideEnd = $('slideEnd'+idModule).offsetLeft;
		widthWrap = $('jdv_iscroll'+idModule+'_wrap').offsetWidth;
		lastInside = slideEnd-$("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.next[index]).offsetLeft;
			
		if (lastInside > widthWrap){
			offsetX = $("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.next[index]).offsetLeft;
			jdvIScrollInstance.scroll[index].scrollTo(offsetX, 0);
		
		}else{
			offsetX = $("jdv_iscroll"+idModule+"_content"+jdvIScrollInstance.next[index]).offsetLeft-(widthWrap-lastInside);
			jdvIScrollInstance.scroll[index].scrollTo(offsetX, 0);
		}
		
		
		jdvIScrollInstance.current[index] = jdvIScrollInstance.next[index];
		jdvIScrollInstance.setPrevNextImage(index);
		setTimeout('jdvIScrollInstance.autoIScroll('+idModule+', '+transDelay+')', transDelay);
	}
}


jdvIScroll.prototype.setPrevNextImage=function(index)
{
// setPrevNextImage (index) {

	jdvIScrollInstance.current[index] = parseInt(jdvIScrollInstance.current[index]);
	jdvIScrollInstance.prev[index] = parseInt(jdvIScrollInstance.prev[index]);
	jdvIScrollInstance.next[index] = parseInt(jdvIScrollInstance.next[index]);
	
	if (jdvIScrollInstance.current[index] != 0) {
		jdvIScrollInstance.prev[index] = jdvIScrollInstance.current[index] - 1;
	} else {
		jdvIScrollInstance.prev[index] = jdvIScrollInstance.current[index];
	}

	if (jdvIScrollInstance.current[index] != (jdvIScrollInstance.count[index] - 1)) {
		jdvIScrollInstance.next[index] = jdvIScrollInstance.current[index] + 1;
	} else {
		//jdvIScrollInstance.next[index] = jdvIScrollInstance.current[index];
		jdvIScrollInstance.next[index] = 0;
	}	
}
