    // megosztott, közös dolgok
    var Forras = {

        options: {

            url: "",
            lang: "hu"

        },
        
        initOnDomready: function() {
        
              // a menü alatti padding problémás, de csak ie6-ban és maces firefox 3-ban
              // nem szép ez a hack, de nem tudtam rájönni a megoldásra
              if (Browser.Engine.gecko) $("content").setStyle("padding-top", "30px");

              // bal oldali page ID képeket beszúrjuk
              var page_id_div = $("page_id");
              var rel = page_id_div.getChildren(0).get("rel");
              
              var linktext = rel;
              if (document.location.href.contains("content")) linktext = "content/"+rel;
              var _link = new Element("a", { "href": Forras.options.url+Forras.options.lang+"/"+linktext });

              var img = new Element("img", { "src": Forras.options.url+"templates/images/"+Forras.options.lang+"/page_id_"+rel+".gif" });
              _link.inject(page_id_div, 'top');
              img.inject(_link);
             
              var span;
              
              // a jobb fejlécek szövegeit lecseréljük képekre
              if ($type($("rightblock"))) { 
                $("rightblock").getElements('h3').each(function(o) {

                    span = o.getChildren(0);
                    rel = o.get("rel");
                    img = new Element("img", { "src": Forras.options.url+"templates/images/"+Forras.options.lang+"/block_"+rel+".gif", "title": span.get("text") });
                    img.inject(o, 'top');
                    span.dispose();

                });
              }
              
              // ha van "flashtext" class-szel beállított h2, akkor lecseréljük flashre
              // kivéve a kínai nyelvnél, mert ott nem!
             /* if (Forras.options.lang == "cn") {

                    $$("h2.flashtext").each(function(o) {
												alert("most");
                        o.setStyle("visibility", "visible");
                    });
                    return;
              }*/
              
              $$("h2.flashtext").each(function(o, i) {
																							 
									if (Forras.options.lang == "cn") {
										o.setStyle("visibility", "visible");
										return;
									}
                
                  var str = o.get("html").toUpperCase();
                  var size = o.getSize();
                  // if (!Browser.Engine.trident) size.y += 20;

                  o.set("html", "");                  
                  var id = "fH2_"+i;
                  new Element("div", { id: id }).inject(o);
                  new Swiff(Forras.options.url+"templates/swf/h2_replace.swf", {

                      id: "hello"+id,
                      width: size.x,
                      height: size.y,
                      container: id,
                      params: {
                        
                          wmode: "transparent",
                          salign: "lt",
                          scale: "noscale",
                          menu: "false"

                      },
                      vars: {
                        
                          htmlstr: str,
                          id: "hello"+id
                      }
                      
                  });
                  
                  var marginbottom = "17px";
                  if (Browser.Engine.trident) marginbottom = "29px";
                  
                  o.setStyles({
                    "visibility": "visible",
                    "margin-bottom": marginbottom
                  });
                
              });
			  
			  // ugyanez h3-ra
			  // ha van "flashtext" class-szel beállított h3!!!, akkor lecseréljük flashre
              // kivéve a kínai nyelvnél, mert ott nem!
              /*if (Forras.options.lang == "cn") {

                    $$("h3.flashtext").each(function(o) {
                        o.setStyle("visibility", "visible");
                    });
                    return;
              }*/
              
              $$("h3.flashtext").each(function(o, i) {
																							 
									if (Forras.options.lang == "cn") {		
											o.setStyle("visibility", "visible");
											return;
									}
                
                  var str = o.get("html").toUpperCase();
                  var size = o.getSize();
                  // if (!Browser.Engine.trident) size.y += 20;

                  o.set("html", "");                  
                  var id = "fH3_"+i;
                  new Element("div", { id: id }).inject(o);
                  new Swiff(Forras.options.url+"templates/swf/h3_replace.swf", {

                      id: "hello"+id,
                      width: size.x,
                      height: size.y,
                      container: id,
                      params: {
                        
                          wmode: "transparent",
                          salign: "lt",
                          scale: "noscale",
                          menu: "false"

                      },
                      vars: {
                        
                          htmlstr: str,
                          id: "hello"+id
                      }
                      
                  });
                  
                  //var marginbottom = "17px";
                  //if (Browser.Engine.trident) marginbottom = "29px";
                  
                  o.setStyles({
                    "visibility": "visible"//,
                    //"margin-bottom": marginbottom
                  });
                
              });
			  
                            
        },
        
        initFlashBorders: function() {

              // a kerettel rendelkező képeket lecseréljük flashes megjelenítésre
              // pontosabban "fölé" rakjuk az új képet, mivel az eredetihez képest -5,-5 pixellel el kell tolni, és így egyszerűbb
              $$(".borderedImg").each(function(o, i) {
                
                  if (!o.hasClass("noFlash")) {
                    
                            var flashVars = { path: o.src };

                            // ha a befoglaló nem div, hanem egy link, akkor eltároljuk a href-et, és lekérjük az igazi szülő divet
                            var _parent = $(o.getParent());
                            if (_parent.get("tag") == "a") {
                              
                                $extend(flashVars, { url: _parent.getProperty("href"), id:_parent.getProperty("id").replace("link", ""), rel:_parent.getProperty("rel") });
                                _parent = _parent.getParent();
                              
                            }
                                                        
                            // az ie egy buzi, és képtelen bármelyik, relative divhez igazodva mindig ugyanazt a koordinátát visszadobni
                            // ezért a kép szülőjéhez viszonyítunk
                            if (Browser.Engine.trident4) {

                                var pos = _parent.getParent().getPosition();
                                pos.x -= 106;
                                pos.y -= 1;

                            } else if (Browser.Engine.trident5) {
                            
                                var pos = _parent.getParent().getPosition();
                                pos.x -= 0;
                                pos.y -= 1;

                            } else {
                              
                                // minden más böngésző cukor ^_^
                                var pos = _parent.getPosition("content");
                              
                            }

                            var flashContainerDiv = new Element("div", {
                              
                                id: "flashContainer"+i,
                                styles: {
                                  
                                    position: "absolute",
                                    zIndex: "999999",
                                    width: o.getStyle("width").toInt()+16,
                                    height: o.getStyle("height").toInt()+16,
                                    top: pos.y-5,
                                    left: pos.x-5
                                    

                                }
                              
                            }).inject("content", "bottom");
                            
                            var mySwiff = new Swiff(Forras.options.url+"templates/swf/img_replace.swf", {
          
                                width: "100%",
                                height: "100%",
                                container: "flashContainer"+i,
                                params: {
                                  
                                    wmode: "transparent",
                                    salign: "lt",
                                    scale: "noscale",
    	                              menu: "false"
    
                                },
    			                      vars: flashVars
    			                      
    			                  });
                        
                  } // hasClass
                
              }); // borderedImg.each

        },
        Gallery: {
          
            showBorderedDiv: function(td) {
              
                td.grab($("borderedDiv"));
              
            },
            
            hideBorderedDiv: function() {
              
                $("gallery").grab($("borderedDiv"));
              
            },
            
            positionShadows: function() {
              
                var pos = $("gallery").getPosition("leftblock");

                pos.y += 35;
                var a = navigator.userAgent;

                if (Browser.Engine.webkit) pos.y += 15;
                if (Browser.Platform.mac && Browser.Engine.gecko) pos.y += 13;
                if (Browser.Platform.win && Browser.Engine.gecko) pos.y -= 5;
                if (Browser.Platform.win && Browser.Engine.gecko && a.contains("Firefox/3.")) pos.y += 18;
                if (Browser.Engine.trident) pos.y += 16;
                
                $("gallery_shadows_left").setStyle("top", pos.y);
                $("gallery_shadows_right").setStyle("top", pos.y);
                              
            },
          
            initBorderedImg: function() {
    
                  // a kerettel rendelkező képeket lecseréljük flashes megjelenítésre
                  // pontosabban "fölé" rakjuk az új képet, mivel az eredetihez képest -5,-5 pixellel el kell tolni, és így egyszerűbb
                  var o = $("pic");
                  var _parent = $(o.getParent());
                  var _parentDiv = _parent.getParent();;
                  var flashVars = {
                      path: o.src,
                      url: _parent.getProperty("href")
                  };
    
                  _parentDiv.setStyles({
                      width: o.getStyle("width").toInt()+16,
                      height: o.getStyle("height").toInt()+16,
                      margin: "10px 20px 10px 0"
                  });
                  
                  var mySwiff = new Swiff(Forras.options.url+"templates/swf/img_replace.swf", {
    
                      width: "100%",
                      height: "100%",
                      container: _parentDiv,
                      params: {
                        
                          wmode: "transparent",
                          salign: "lt",
                          scale: "noscale",
                          menu: "false"
    
                      },
                      vars: flashVars
                      
                  });
    
            },
            
            clickFromFlash: function(id) {
              
                $("link"+id).fireEvent('click');
              
            }
            
        },
        
        bigListElements: {
          
            tooltips: [],
            
            show: function(id) {
               
                this.tooltips[id].show();
                this.tooltips[id].position();

            },
          
            hide: function(id) {
              
                this.tooltips[id].hide();

            },
          
            // az összes elemen végigmegyünk, és lecseréljük őket flashre
            init: function(areTherePictures) {
              
                $$(".bigListElement").each(function(o) {

                    var id = o.get("id").replace("el", "");

                    // tooltip
                    if (areTherePictures == true) {
                        $('el'+id).store('tip:text', $("artistPicture"+id).get("html"));
                        Forras.bigListElements.tooltips[id] = new Tips($('el'+id), {className: "tooltip"}); 
                    }

                    o.addEvents({
                      
                        "mouseenter": function() { 
                            this.addClass("over");
                            // if (areTherePictures) Forras.bigListElements.tooltips[id].show(); 
                        },
                        "mouseleave": function() {
                            this.removeClass("over");
                            // if (areTherePictures) Forras.bigListElements.tooltips[id].hide();
                        },
                        "click": function() { document.location.href = this.getElements("a")[0].get("href"); }
                    
                    });
                
                });
            
                // ha nincs, vagy régi a flash, akkor kilépünk - de így is élvezhető a látvány az előző eventek miatt
                if (Browser.Plugins.Flash.version < 8 || Forras.options.lang == "cn") {
                  
                    // visszaállítjuk a visibility-t az elemeken (domready-nél elrejtettük őket)
                    $$(".bigListElement").each(function(o) {
                        o.setStyle("visibility", "visible");
                    });
                    return;
                }
                
                // van flash, fasza, akkor most beszúrjuk az swf-eket
                $$(".bigListElement").each(function(div, i) {
                  
                    // kezdésnek törölni kell az eventeket, most már feleslegesek
                    // div.removeEvents();
                    
                    var elementID = div.get("id").replace("el", "");

                    var size = div.getSize();
            				var w = size.x;
            				var h = size.y+10; 

                    // létrehozzuk azt a stringet, amit a flashnek átadunk
                    var str = '';
            				var url = '';

            				for (var n = 0; n < div.childNodes.length; n++) {
            					if (div.childNodes[n].nodeType == 1) {
            						var el = div.childNodes[n];
            						if (el.tagName == 'H3') {
            							// url-t kiszedem külön, és beadom külön
            							var url = el.getElementsByTagName('a')[0].href;
            							// h3 tartalmát nagybetűssé is alakítom
            							str += '<h3>'+el.getElementsByTagName('a')[0].innerHTML.toUpperCase()+'</h3>';
            						} else if (el.innerHTML != '' && el.innerHTML != undefined) {
            							// div helyett span megy be a flashnek (az jobb nekem :))
            							str += '<span class="'+el.className+'">'+el.innerHTML+'</span>';
            						}
            					};
            				}

            				// enkódolom a sztringet a spec karakterek miatt (szintén ie specifikus)
            				str = encodeURI(str);

            				// div összes belső elemét eltüntetjük amennyiben azok element típusúak
            				div.getChildren().each(function(o, i) {

            				    if ($type(o) == "element") o.setStyle("display", "none");
            				  
            				});
            				
            				// leszedjük a div padding-ját, hogy flash kitölthesse az elemet
            				div.setStyle("padding", "0");
            				var id = 'fBlock_'+elementID;

            				// div-be beleinjektálunk egy divet, amit majd cserél az swfobject
            				new Element("div", { 
            				    "id": id,
            				    "name": id,
            				    "styles": {
            				      "z-index": "-1"
            				    }
            				}).inject(div);
            							
            				div.setStyle("visibility", "visible");

            				var flashvars = {
            				    htmlstr: str,
            				    url: url,
            				    id: "hello"+id,
            				    elementID: elementID
            				};

                    new Swiff(Forras.options.url+"templates/swf/block_replace.swf", {
                      
                        id: "hello"+id,  
                        width: w,
                        height: h,
                        container: id,
                        params: {
                          
                            wmode: "transparent",
                            salign: "lt",
                            scale: "noscale",
                            menu: "false"
  
                        },
                        vars: flashvars
                        
                    });   
    			                               
                });
                  
            }

        },
        
        Pressroom: {
        
            exhibitions: [],
        
            // sajtóközlemények oldalon onload után a művész selectre rárakunk egy hookot,
            // ha kiválaszt valamit a user, akkor az alatta lévő kiállítások select "szűrődik"
            // és csak a kapcsolódó kiállítások látszódnak
            initFilterSelects: function() {

                var v;

                // betöltjük az összes kiállítást egy tömbbe, hogy innen tudjunk csemegézni majd
                var exhibitionSelect = $("exhibitionID");
                var artistSelect = $("artistID");
                
                for (a = 0; a < exhibitionSelect.options.length; a++) {
                    
                    v = exhibitionSelect.options[a].value;
                    if (v == "all") v = 0;
                    this.exhibitions[v] = exhibitionSelect.options[a].text;

                }
                
                // illetve most megnézzük, hogy ha nem az "all" van beállítva, akkor onloadnál is kell egy filter
                if (artistSelect.getSelected()[0].value != "all") Forras.Pressroom.filterExhibitions();

            },
            
            filterExhibitions: function() {

                    var exhibitionSelect = $("exhibitionID");
                    var artistSelect = $("artistID");
                    var v, _selected;
                    
                    exhibitionSelect.options.length = 0;

                    // ha választ egy művészt,
                    // akkor a már előzőleg egy tömbben eltárolt összes kiállítás közül beállítjuk azokat,
                    // amelyek a connections tömb adott elemében megtalálhatóak
                    var selectedArtistValue = artistSelect.getSelected()[0].value;
                    if (selectedArtistValue != "all") {
                      
                        exhibitionSelect.options[0] = new Option(Forras.Pressroom.exhibitions[0], "all");

                         // persze csak ha van hozzárendelés az adott művészhez
                         if ($type(connections[selectedArtistValue]) != false)  {
                             connections[selectedArtistValue].each(function(item, index) {
  
                                 _selected = false;
                                 if (item == params.exhibition) _selected = true;
                                 exhibitionSelect.options[index+1] = new Option(Forras.Pressroom.exhibitions[item], item, _selected);
                             
                             });
                         }
                     
                    } else {
                     
                         // ha az összes művészre kattintott, akkor visszarakjuk az összes kiállítást
                         var i = -1;
                         Forras.Pressroom.exhibitions.each(function(item, index) {
                             if (item) {
                                 i++;
                                 v = index;
                                 if (index == 0) v = "all";
                                 exhibitionSelect.options[i] = new Option(item, v);
                             }
                         });
                     
                    }
                                        
                    exhibitionSelect.highlight();

            },
            
            submitFilter: function() {
            
                var baseURL = Forras.options.url+Forras.options.lang+"/pressroom/";
                document.location.href = baseURL+"artist:"+$("artistID").getSelected()[0].value+"/exhibition:"+$("exhibitionID").getSelected()[0].value;
            
            }
        
        },
        
        flashInserts: {
          
            video: function(path) {
              
                new Swiff(Forras.options.url+"templates/swf/fg_video_player.swf", {

                    width: "480",
                    height: "392",
                    container: $("flashvid"),
                    params: {
                      
                        wmode: "transparent",
                        salign: "lt",
                        scale: "noscale",
                        menu: "false"

                    },
                    vars: {
                      
                        lang: Forras.options.lang,
                        path: path
                      
                    }
                    
                });
              
            },
          
            audio: function(pressTitle, filePath) {
              
                // a legördülő selecteket ie alatt nem fedi el az overlay, ezért elrejtjük őket
                if (Browser.Engine.trident) $$("select").setStyle("visibility", "hidden");
              
                // létrehozzuk a fedő layert
                var size = document.body.getSize();
                var flashSize = {
                    width: 480,
                    height: 31
                }
                
                var overlay = new Element("div", {
                  id: "overlay",
                  styles: {
                    width: size.x,
                    height: size.y
                  }
                });
                overlay.inject(document.body);
                overlay.tween("opacity", "0.8");

                // ez a konkrét tartalmi div
                var audioFlashContainer = new Element("div", {
                    id: "audioFlashContainer",
                    html: "<div class='pressTitle'>"+pressTitle+"</div>"+
                          "<div class='close'><a href='javascript:;' onclick='Forras.flashInserts.closeAudio()'><span>[ x ]</span></a></div>"+
                          "<div id='audioFlash'></div>"
                });
                audioFlashContainer.inject(document.body);
                
                var audioFlashContainerSize = audioFlashContainer.getSize();
                audioFlashContainer.setStyles({
                        top: (size.y/2)-((audioFlashContainerSize.y+31)/2),
                        left: (size.x/2)-(flashSize.width/2)
                });

                // firefoxban a flashre kattintásnál is az overlay click event fut le, ezért ezt megakadályozzuk
                audioFlashContainer.addEvent("click", function(event) {
                    event.stop();
                });
                
                // és akkor most a flash-t is beszúrjuk
                new Swiff(Forras.options.url+"templates/swf/fg_mp3_player.swf", {

                    width: flashSize.width,
                    height: flashSize.height,
                    container: $("audioFlash"),
                    params: {
                      
                        salign: "lt",
                        scale: "noscale",
                        menu: "false"

                    },
                    vars: {
                      
                        path: filePath
                      
                    }
                    
                });
              
                // ha a flashen kívülre kattint, eltüntetjük az egész divet, tehát visszatérhetünk a listához
                overlay.addEvent("click", Forras.flashInserts.closeAudio);

            },
            
            closeAudio: function() {
              
                $("overlay").dispose();
                $("audioFlashContainer").dispose();
                $$("select").setStyle("visibility", "visible");
              
            }

        }
        
    }
    
    window.addEvent('domready', function() {

        Forras.initOnDomready();
    
    });

    window.addEvent('load', function() {

        Forras.initFlashBorders();
    
    });

    function over(mi)   { mi.addClass('hover'); }
    function out(mi)  { mi.removeClass('hover');  }
    

		function resizeSwf(o, w, h) {
  		  $(o).setStyles({
  		    
  		      width: w,
  		      height: h
  		    
  		  });
  		  if ($("gallery_shadows_left")) Forras.Gallery.positionShadows();
		}    