            /* *****************************************
			*   program: VirtualWindow v1.0            *
            *                                          *
			*   Készítette: veghsan, 25/02/2009        *
            *                                          *
            *******************************************/





/* ******************************************************************
*	Referenciák alapbeállításai
*	Szükséges referenciák:
*		-fakeflash.js v1.0
* */
	LiveFader.DefineFadeType("vwbg", 20, -20, 0, 90, "block", "none");
	LiveFader.DefineFadeType("vwframe", 20, -20, 0, 100, "block", "none");
	LiveFader.DefineFadeType("vwcontrols", 40, -5, 0, 100, false, false);

/* ******************************************************************
*	VirtualWindow 
*		Képek és embedded objectek megjelenítésére használható
*		függvénygyüjtemény.
* */

	//--------------------------------------------------------
	// VirtualWindow
	// Képek és html tartalmak (pl. embedd) megjelenítét végzi
	VirtualWindow =
	{
		frame : null,
		content: null,

		//-----------------------------------------------------
		// ShowImage
		// Kép megjelenítése a felugró ablakban.
		// paraméterek: - path : a kép elérési útja
		//              - link 
		ShowImage : function(path, link)
		{
			VirtualWindow.content = 
			{
				type: "image",
				path: path,
				link: link
			};
			VirtualWindow.Execute("showbg");
		},
		
		
		//-----------------------------------------------------
		// ShowHTMLCode 
		// HTML kód megjelenítése a felugró ablakban.
		// paraméterek: - code : megjelenítendő html kód
		//              - width : felugró ablak szélessége
		//              - height : felugró ablak magassága
		//              - link
		ShowHTMLCode : function(code, width, height, link)
		{
			VirtualWindow.content = 
			{
				type: "html",
				code : code,
				link: link,
				width: width,
				height: height
			};
			VirtualWindow.Execute("showbg");
		},
		
		
		//-------------------------------------------------------
		// Close
		// A fram és a háttér bezárása, méretük minimalizálása
		Close : function()
		{
			with (VirtualWindow)
			{
				LiveFader.Off(frame.frameFader, 'with (VirtualWindow) {RepositionFrame(0,0); frame.center.innerHTML = "";}');
				LiveFader.Off(frame.bgFader, 'with (VirtualWindow.frame) {bg.style.width = bg.style.height = "0px"; }');
				PreLoader.RemoveTeam("vw_temp");
				content = null;
			}
		},
		
		
		//------------------------------------------------------
		// Enlarge
		// Az éppen aktuális tartalom linkjét nyitja meg egy új
		// ablakban
		Enlarge : function()
		{
			with (VirtualWindow)
			{
				if (content == null || content.link == "")
					return;
				
				window.open(
					content.link, 
					"virtualwindow_enlarged",
					"toolbar=no,status=no,resizable=yes");
			}
		},
		

		//-----------------------------------------------------
		// Execute : parancs végrehajtása a megjelenítéssel
		// kapcsolatban.
		// Parancsok: - showbg : a megjelenítés elindítása
		//               (a háttér megjelenítése, aztán tovább..)
		//            - showloading : a letöltési sorba teszi a
		//               képet, ha betöltötte, showimage
		//            - showimage : kép megjelenítése. Ha még
		//               nem töltődött be: showloading
		//            - showhtml : html kód megjelenítése.
		Execute : function(command)
		{
			with (VirtualWindow)
			{
				if (content == null)
					return;
				switch (command)
				{
					case "showbg":
						RepositionBg();
						if (content.type == "image")
							LiveFader.On(frame.bgFader, 'VirtualWindow.Execute("showimage");');
						else if (content.type == "html")
							LiveFader.On(frame.bgFader, 'VirtualWindow.Execute("showhtml");');
						else
							alert("Error: VirtualWindow.Execute - invalid content type: " + content.type);
						break;
					case "showloading":
						var img = new Image;
						img.src = content.path;
						if (false && img.complete)
							LiveFader.Off(frame.frameFader, 'VirtualWindow.Execute("showimage");');
						else
						{
							img = new Image;
							img.src = frame.loadingimage;
							frame.center.style.backgroundImage = "url(" + img.src + ")";
							RepositionFrame(img.width, img.height);
							LiveFader.On(frame.frameFader);
							
							var onLoaded = "LiveFader.Off(VirtualWindow.frame.frameFader, \"VirtualWindow.Execute('showimage');\");";
							PreLoader.AddImage(content.path, 0, "vw_temp", null, "", onLoaded, "")
						}
						break;
					case "showimage":
						var img = new Image;
						img.src = content.path;
						if (img.complete)
						{
							frame.center.style.backgroundImage = "url(" + content.path + ")";
							RepositionFrame(img.width, img.height);
							LiveFader.On(frame.frameFader);
						}
						else
							Execute("showloading");
							
						break;
					case "showhtml":
						RepositionFrame(content.width, content.height);
						frame.center.style.backgroundImage = "none";
						frame.center.innerHTML = content.code;
						LiveFader.On(frame.frameFader);
						break;
				}
			}
		},

		//----------------------------------------------------
		// GetPageSize : a dokumentum és az ablak méreteit adja 
		// vissza.
		// Formátum:
		//    {  
		//       page : {width, height},
		//       window : {width, height}
		//    }
		GetPageSize : function()
		{  
			var page = {width:0, height:0};
			var wnd = {width:0, height:0};
			var xScroll, yScroll;  

			if (window.innerHeight && window.scrollMaxY) 
			{  
				xScroll = document.body.scrollWidth;
				yScroll = window.innerHeight + window.scrollMaxY;
			} 
			else if (document.body.scrollHeight > document.body.offsetHeight)
			{ // all but Explorer Mac
				xScroll = document.body.scrollWidth;
				yScroll = document.body.scrollHeight;
			} 
			else 
			{ // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
				xScroll = document.body.offsetWidth;
				yScroll = document.body.offsetHeight;
			}

			var windowWidth, windowHeight;
			if (self.innerHeight) 
			{  // all except Explorer
				wnd.width = self.innerWidth;
				wnd.height = self.innerHeight;
			} 
			else if (document.documentElement && document.documentElement.clientHeight) 
			{ // Explorer 6 Strict Mode
				wnd.width = document.documentElement.clientWidth;
				wnd.height = document.documentElement.clientHeight;
			} 
			else if (document.body) 
			{ // other Explorers
				wnd.width = document.body.clientWidth;
				wnd.height = document.body.clientHeight;
			}  
  
			// for small pages with total height less then height of the viewport
			if(yScroll < wnd.height)
				page.height = wnd.height;
			else 
				page.height = yScroll;
			
			if (xScroll < wnd.width)
				page.width = wnd.width;
			else
				page.width = xScroll;

			return {page : page, wnd : wnd};
		},

		
		//--------------------------------------------------
		// GetScrollPosition: a képernyő bal felső sarkának
		// a dokumentumon vett koordinátáit adja vissza
		// {x,y} formában
		GetScrollPosition : function()
		{
			var pos = {x:0, y:0};
			if (typeof(window.pageYOffset) == 'number') 
			{
				//Netscape compliant
				pos.x = window.pageXOffset;
				pos.y = window.pageYOffset;
			} 
			else if (document.body && (document.body.scrollLeft || document.body.scrollTop))
			{
				//DOM compliant
				pos.x = document.body.scrollLeft;
				pos.y = document.body.scrollTop;
			} 
			else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) 
			{
				//IE6 standards compliant mode
				pos.x = document.documentElement.scrollLeft;
				pos.y = document.documentElement.scrollTop;
			}
			
			return pos;
		},
		
		
		//-----------------------------------------------------
		// RepositionFrame: átméretezi és a képernyő közepére
		// helyezi a tartalommegjelenítő keretet.
		// paraméterk: - width : a megjelenítendő tartalom szélessége
		//             - height: a tartalom magassága
		RepositionFrame : function(width, height)
		{
			with (VirtualWindow) 
			{
				if (width < frame.frozenwidth)
					width = frame.frozenwidth;
				if (height < frame.frozenheight)
					height = frame.frozenheight;
				frame.top.style.width = (width - frame.frozenwidth) + "px";
				frame.bottom.style.width = (width - frame.frozenwidth) + "px";
				frame.left.style.height = (height - frame.frozenheight) + "px";
				frame.right.style.height = (height - frame.frozenheight) + "px";
				frame.center.style.width = width + "px";
				frame.center.style.height = height + "px";
				
				var winsize = VirtualWindow.GetPageSize().wnd;
				var winpos = VirtualWindow.GetScrollPosition();
				var frametop = ((winsize.height - height) / 2 + winpos.y - frame.borderheight);
				var frameleft = ((winsize.width - width) / 2 - frame.borderwidth);
				if (frametop < 0)
					frametop = 0;
				if (frameleft < 0)
					frameleft = 0;
				
				
				frame.table.style.top = frametop + "px";
				frame.table.style.left = frameleft + "px";
			}
		},
		
		//---------------------------------------------------
		// RepositionBg : a hátteret kitakaró divet dokumentum
		// teljes méretére növeli
		RepositionBg : function()
		{
			with (VirtualWindow)
			{
				var size = GetPageSize().page;
				frame.bg.style.width = size.width + "px";
				frame.bg.style.height = size.height + "px";
			}
		},
		

		//--------------------------------------------------
		// Implant: kiírja a dokumentumba a szükséges HTML
		// elemeket, és regisztrálja a létrejövő objektumokat
		// paraméterek: - borderwidth : az oldalszegélyek
		//                 átlagos vastagsága
		//              - borderheight: a felső és alsó 
		//                 szegélyek átlagos vastagsága
		//              - frozenwidth 
		//              - frozenheight : az oldalsó ill. felső
		//                 szegélyeknél a sarkokhoz közeli,
		//                 rögzített képpel rendelkező részek
		//                 össz szélessége / magassága
		//              - loadingimage : képbetöltésnél a
		//                 loading kép elérési útja
		Implant : function (borderwidth, borderheight, frozenwidth, frozenheight, loadingimage)
		{
		
			document.write(
					'<div id="vwbg"></div><table id="vwframe" cellspacing="0" cellpadding="0">' +
					'<tr><td><div id="vwtlc"></div></td><td><div id="vwtlm"></div></td>' +
					'<td><div id="vwt"></div></td><td><div id="vwtrm"><div id="vwenlarge"></div>' +
					'</div></td><td><div id="vwtrc"><div id="vwcancel"></div></div></td>' +
					'</tr><tr><td><div id="vwlt"></div></td> <td colspan="3" rowspan="3">' +
					'<div id="vwcenter"></div></td><td><div id="vwrt"></div></td></tr>' +
					'<tr><td><div id="vwl"></div></td><td><div id="vwr"></div></td></tr>' +
					'<tr><td><div id="vwlb"></div></td><td><div id="vwrb"></div></td>' +
					'</tr><tr><td><div id="vwblc"></div></td><td><div id="vwblm"></div></td>' + 
					'<td><div id="vwb"></div></td><td><div id="vwbrm"></div></td><td>' +
					'<div id="vwbrc"></div></td></tr></table>'
				);
			
			VirtualWindow.frame =
			{
				bg : document.getElementById("vwbg"),
				table : document.getElementById("vwframe"),
				center : document.getElementById("vwcenter"),
				cancel : document.getElementById("vwcancel"),
				enlarge : document.getElementById("vwenlarge"),
				top : document.getElementById("vwt"),
				bottom : document.getElementById("vwb"),
				left : document.getElementById("vwl"),
				right : document.getElementById("vwr"),
				borderwidth : borderwidth,
				borderheight : borderheight,
				frozenwidth : frozenwidth,
				frozenheight: frozenheight,
				loadingimage : loadingimage,
				frameFader : LiveFader.Create(true, document.getElementById("vwframe"), "vwframe"),
				bgFader : LiveFader.Create(true, document.getElementById("vwbg"), "vwbg")
			};
			
			with (VirtualWindow.frame)
			{
				bg.onclick = VirtualWindow.Close;
				
				cancel.liveFaderOver = LiveFader.Create(true, cancel, "vwcontrols");
				cancel.onmouseover = function(){ LiveFader.On(this.liveFaderOver); };
				cancel.onmouseout = function(){ LiveFader.Off(this.liveFaderOver); };
				cancel.onclick = VirtualWindow.Close;
				
				enlarge.liveFaderOver = LiveFader.Create(true, enlarge, "vwcontrols");
				enlarge.onmouseover = function(){ LiveFader.On(this.liveFaderOver); };
				enlarge.onmouseout = function(){ LiveFader.Off(this.liveFaderOver); };
				enlarge.onclick = VirtualWindow.Enlarge;
			}
		
		}
	}


