/* A fooldalon levo Comic leptetoje
** Az osztály egy példánya egy csúsztatható képgalériát valósít meg, egyszerre 1 kép látszik, a rightButtonnal és a leftButtonnal lehet léptetni.
** Egy hozzatartozo szamlaloban mutatja, hogy melyik kepet jeleniti eppen meg, es hogy hany kep van osszesen
** A csúsztatás Tweennel van megoldva
** Jelenleg lehet tobbet is leptetni egyszerre, nem kell megvanrni, amig az animacio befejezodik.
*/

comicNumberObject = function(comic_num,comic_ref)
{
	return{
		_num:comic_num,
		_ref:comic_ref
	}
}

pokerAPI.comicslide = function()
{
	return{
			ablak : 25, //ennyi kep lesz szethuzva egyszerre
			positionx : 0, //az aktuális eltolás
			oldalszam : 1, //ennél a képnél tart a csúszka (ez a baloldali kép sorszáma)
			kepszam : 0, //ennyi kép van összesen
			status:0, //amíg zajlik a csúsztatási animáció, addig ennek a változónak az értéke 1,ha áll 0, ennek vizsgálatával oldható meg, hogy egyszerre csak egyet lehessen léptetni
			t1 : new Tween(), 
			listenerr : new Object(),
			isimageloaded : new Array(),
			
			elementObj : new Object(), //ez a comicslide gallery referenciája, ezen belül van a container, a szamlalo és a gombok
			leftButton : new Object(),
			container : new Object(),
			rightButton : new Object(),
			szamlalo : new Object(),
			
			
			hideLeftArrow : function()
			{
				this.leftButton.style.display="none";
			},
			
			showLeftArrow : function()
			{
				this.leftButton.style.display="block";
			},
			
			hideRightArrow : function()
			{
				this.rightButton.style.display="none";
			},
			
			showRightArrow : function()
			{
				this.rightButton.style.display="block";
			},
			
			//csúsztatások a képgalérián, kiírja az aktuális oldalszámot, és ha szükséges, eltünteti vagy megjeleníti a nyilakat
			left : function ()
			{	
				if(parseInt(this.oldalszam)<this.kepszam && this.isimageloaded[this.oldalszam]==true)
				{
					this.extendImgContainer(this.oldalszam+this.ablak,false);
					this.collapseImgContainer(this.oldalszam-this.ablak+1,true);
					this.t1=new Tween(elem.style,'left',Tween.regularEaseInOut,parseInt(elem.style.left),10,1,'px');
					this.listenerr.onMotionFinished = function(){this.status=0;};
					this.listenerr.onMotionStarted = function(){this.status=1;};
					this.t1.addListener(this.listenerr);
					
					this.positionx=this.positionx-230;
					this.oldalszam=this.oldalszam+1;
					this.t1.continueTo(parseInt(this.positionx),1);
					this.writeIt(this);
					if(this.oldalszam!=1) this.showLeftArrow();
					if(this.oldalszam==this.kepszam) this.hideRightArrow();
					this.startImageLoad(this.oldalszam+3);
				}
			},
			
			right : function ()
			{
				if(parseInt(this.oldalszam)>1 && this.isimageloaded[this.oldalszam-2]==true)
				{			
					this.extendImgContainer(this.oldalszam-this.ablak,true);
					this.collapseImgContainer(this.oldalszam+this.ablak-1,false);
					this.t1=new Tween(elem.style,'left',Tween.regularEaseInOut,parseInt(elem.style.left),10,1,'px');
					this.listenerr.onMotionFinished = function(){this.status=0;};
					this.listenerr.onMotionStarted = function(){this.status=1;};
					this.t1.addListener(this.listenerr);

					this.positionx=this.positionx+230;
					this.oldalszam=this.oldalszam-1;
					this.t1.continueTo(parseInt(this.positionx),1);
					this.writeIt(this);
					if(this.oldalszam==1) this.hideLeftArrow();
					if(this.oldalszam!=this.kepszam) this.showRightArrow();
					this.startImageLoad(this.oldalszam-3);
					this.startImageLoad(this.oldalszam-this.ablak+2);
					//osszenyomas 0 pxre + kontener eltolasa
				}
			},
			
			//szethuzas 230px-re
			extendImgContainer : function(pos,correction)
			{
				if(pos>=0 && this.container.childNodes[pos]!=null){
					var basenode = this.container.childNodes[pos];
					var parentscollection = basenode.getElementsByTagName("a");
					var childnodea = parentscollection[0];
					var targetnode = childnodea.parentNode;
					targetnode.style.width=230+"px";
					targetnode.style.display="block";
					if(correction){
						var containerLeft = parseInt(this.container.style.left)-230;
						this.container.style.left=containerLeft+"px";
						this.positionx=this.positionx-230;
					}
					var spansColl=basenode.getElementsByTagName("span");
					for(var i=0; i<spansColl.length;i++)
					{
						spansColl[i].style.display="block";
					}
				}
			},
			
			//osszenyomas 0px-re + kontener eltolasa
			collapseImgContainer : function(pos,correction)
			{
				if(pos>=0 && this.container.childNodes[pos]!=null){
						var basenode = this.container.childNodes[pos];
						var parentscollection = basenode.getElementsByTagName("a");
						var childnodea = parentscollection[0];
						var targetnode = childnodea.parentNode;
						targetnode.style.width=0;
						targetnode.style.display="none";
						//this.positionx=this.positionx+230;
						if(correction){
							var containerLeft = parseInt(this.container.style.left)+230;
							this.container.style.left=containerLeft+"px";
							this.positionx=this.positionx+230;
						}
				}
			},
			
			//adott pozicioju kep betoltesenek kezdese
			startImageLoad : function(pos)
			{	
			
			
			
				if(pos>=0 && this.container.childNodes[pos]!=null){
					var basenode = this.container.childNodes[pos];
					var parentscollection = basenode.getElementsByTagName("a");
					var parentnode = parentscollection[0];
					var targetnode = parentnode.firstChild;
					
					var targetcollection = targetnode.getElementsByTagName("span");
					
					var sourcenode;
					var titlenode;
					var widthnode;
					var heightnode;
					for(var i=0;i<targetcollection.length;i++){
						if(targetcollection[i].id=="url") var sourcenode = targetcollection[i];
						if(targetcollection[i].id=="title") var titlenode = targetcollection[i];
						if(targetcollection[i].id=="width") var widthnode = targetcollection[i];
						if(targetcollection[i].id=="height") var heightnode = targetcollection[i];
					}
						
					if (sourcenode!=null && sourcenode!=undefined){
						var newElement = document.createElement('img');
						
						newElement.alt = titlenode.innerHTML;
						newElement.src = sourcenode.innerHTML;
						newElement.width = widthnode.innerHTML;
						newElement.height = heightnode.innerHTML;
						
						parentnode.replaceChild(newElement, targetnode);
						
						var tmpimg = new Image();
						tmpimg.src = newElement.src;
						objcmcRS = new comicNumberObject(pos,this);
						globalComicDone.push(objcmcRS);
						this.isimageloaded[pos]=false;
						tmpimg.onload = copyFunction(this.setLoadedImgArray, objcmcRS); 
						tmpimg.onerror = copyFunction(this.delLoadedImgArray, objcmcRS); 
						tmpimg.onabort = copyFunction(this.delLoadedImgArray, objcmcRS); 
						comicelements.push(tmpimg);
						if (window.opera && tmpimg.complete) this.isimageloaded[pos]=true;
					}
				}
			},
			
		
			// atallitja a betoltott img tombot
			setLoadedImgArray : function (refObj)
			{
				refObj._ref.isimageloaded[refObj._num]=true;
			},
			// atallitja a betoltott img tombot, ha egyeb hibakezeles kell, azt ide
			delLoadedImgArray : function (refObj)
			{
				refObj._ref.isimageloaded[refObj._num]=true;
			},
			
			// a counter értékét írja ki
			writeIt : function (obj)
			{
			g=this.oldalszam+1;
			if(this.kepszam==0)this.szamlalo.innerHTML="0 / 0";
			else if(this.kepszam==1)this.szamlalo.innerHTML="1 / 1";
			else {this.szamlalo.innerHTML=this.oldalszam+" / "+this.kepszam;}
			},
			
			//inicializálás, paraméterként kapja a comicslide galéria referenciáját
			Class : function (obj)
			{
			
			
				
				
				//Default kepszam kiolvasasa az urlbol
				// get the current URL
				var url = window.location.toString();
				//get the parameters
				url.match(/\?(.+)$/);
				var params = RegExp.$1;
				// split up the query string and store in an
				// associative array
				var params = params.split("&");
				var queryStringList = {};
				
				for(var i=0;i<params.length;i++)
				{
				    var tmp = params[i].split("=");
				    queryStringList[tmp[0]] = unescape(tmp[1]);
				}
				var defaultPicNum = queryStringList["comicNum"];
				if(defaultPicNum==null || defaultPicNum==undefined)defaultPicNum=1;
				else defaultPicNum=parseInt(defaultPicNum);
				
				var a = 0;
				elementObj = obj;
				
				tartalom = elementObj.getElementsByTagName("DIV");
				
				//az xslbol alapbol betoltott kepek isloadedjat true-ra allitjuk
				var defaultLoadedImages = 5;
				for(i = defaultPicNum-5; i < defaultPicNum+5; i ++ )
				{
					this.isimageloaded[i]=true;
				}
				
				//referenciák beállítása
				for(i = 0; i < tartalom.length; i ++ )
				{
					if (tartalom[i].className.indexOf("kijelzo") > - 1) {this.szamlalo=tartalom[i];}
					if (tartalom[i].className.indexOf("LeftArrow") > - 1) {this.leftButton=tartalom[i];}
					if (tartalom[i].className.indexOf("elemek") > - 1) {this.container=tartalom[i];}
					if (tartalom[i].className.indexOf("RightArrow") > - 1) {this.rightButton=tartalom[i];}
				}
				/*
				//megszámolja, hogy hány kép van összesen
				this.kepszam = this.container.getElementsByTagName("IMG").length;
				*/
				//ez kell az eventekhez! külön névtérbe ugrik ki utána az ezzel meghívott függvény, ezért a megfelelo referenciákat át kell adni, hogy a példányt el lehessen érni!
				function copyFunction(func, arg)
			    {
			        return function()
			        {
			           func(arg); 
			        }
			    }   
				
				function writeIt(){szamlalo.innerHTML=oldalszam;}
				
				//bal és jobbgombra kattintés eseményei
				clickEventLeft = function(obj)
			    {
					obj.right();
			    }
				
				clickEventRight = function(obj)
			    {
					obj.left();
			    }
				
				//események bekötése
			    this.leftButton.onclick = copyFunction(clickEventLeft, this);
				this.rightButton.onclick = copyFunction(clickEventRight, this);
				
				//Tween inicializálása és rákötése a containerre, és hozzá egy listener inicializálása, ,ami a tween példány onMotionFinished és onMotionStarted esemményeit figyeli. 
				listenerr= new Object();
				elem = this.container;
				this.t1=new Tween(elem.style,'left',Tween.regularEaseInOut,parseInt(elem.style.left),10,1,'px');
				this.listenerr.onMotionFinished = function(){this.status=0;};
				this.listenerr.onMotionStarted = function(){this.status=1;};
				this.t1.addListener(this.listenerr);
				
				
				
				for(var i=0; i<this.container.childNodes.length ;i++){
					if(this.container.childNodes[i]==null || this.container.childNodes[i].firstChild==null)this.container.removeChild(this.container.childNodes[i]);
				}
				
				//megszámolja, hogy hány kép van összesen
				this.kepszam = this.container.childNodes.length;
				
				//default pozicioba allitas
				this.startImageLoad(defaultPicNum);
				
				for(var iRunner=1; iRunner<4; iRunner++)
				{
					this.startImageLoad(defaultPicNum-iRunner);
					this.startImageLoad(defaultPicNum+iRunner);
				}
				this.extendImgContainer(defaultPicNum,false);
				for(var iRunner=1; iRunner<this.ablak; iRunner++)
				{
					this.extendImgContainer(defaultPicNum+iRunner,false);
					this.extendImgContainer(defaultPicNum-iRunner,true);
				}
				
				if(defaultPicNum!=1) this.showLeftArrow();
				this.oldalszam = defaultPicNum;
				this.container.style.left=(parseInt(this.container.style.left)+230)+"px";
				this.positionx += 230;
				this.writeIt(obj);
			}
  };
}

pokerAPI.comicslide.menuObj = null;
divss=document.getElementsByTagName("DIV");
var comicslides = new Array();
var comicelements = new Array();
var globalComicDone = new Array();
function loadComicInitMenu() {
	try
   {
		var i=0;
		for(i = 0; i < divss.length; i ++ )
		{	//megkeresi a comicslide galleryket, és berakja oket egy tömbbe
			if (divss[i].className.indexOf("GalleryList") > - 1 && divss[i].id=="comicSlide") 
			{
				pokerAPI.comicslide.menuObj = new pokerAPI.comicslide();
				pokerAPI.comicslide.menuObj.Class(divss[i]);
				comicslides.push(pokerAPI.comicslide.menuObj);
			}
		}
   }
   catch(e)
   {
      alert(e);
   }
}
addLoadEvent(loadComicInitMenu);
