// Common.js Copyright by Guards Rt. 1999-2000
function Is()
 {
  var agent = navigator.userAgent.toLowerCase();
  this.major = parseInt(navigator.appVersion);
  this.ns  = ((agent.indexOf('mozilla')!=-1) && ((agent.indexOf('spoofer')==-1) && (agent.indexOf('compatible') == -1)));
  this.ns4 = (this.ns && (this.major >= 4) && (this.major < 5));
  this.ns6 = (this.ns && (this.major >= 5));
  this.ie   = (agent.indexOf("msie") != -1);
  this.ie4  = (this.ie && (this.major >= 4));
 }

  //////////////////////////
 // The global variables //
//////////////////////////
var is = new Is();

var GM; // A global mouse kezelés
var FM; // Float menuk bázisa.
var EVl = new Array(); // Body onload funkciók
var EVu = new Array(); // Body onunload funkciók

if(is.ns4) {
	doc = "document['";
	ojj = "']";
	sty = "'].";
} else if(is.ie4) {
	doc = "document.all['";
	ojj = "']";
	sty = "'].style.";
} else if(is.ns6) {
	doc = "document.getElementById('";
	ojj = "')";
	sty = "').style.";
}

////////////////////// DEBUG //////////////////////
var dbg_cnt = 0;

// if(is.ie4) document.onkeydown = KPO;

function onerror() {
	document.location.href = "javascript:";
}

var lay = 0;
var lays = Array("fmenu1", "fmenu1x3", "fmenu1x3x4", "fmenu1x6", "fmenu2", "fmenu3", "fmenu3x1", "fmenu3x1x1");

function KPO(e)
 {
  var key = window.event.keyCode;
  var shift = window.event.shiftKey;
  switch(key)
   {
    case 100:
      break;
    case 83: // 's'
     SetPos(lays[lay], GetX(lays[lay])-(shift?10:1), GetY(lays[lay]));
     break;
    case 68: // 'd'
     SetPos(lays[lay], GetX(lays[lay])+(shift?10:1), GetY(lays[lay]));
     break;
    case 69: // 'e'
     SetPos(lays[lay], GetX(lays[lay]), GetY(lays[lay])-(shift?10:1));
     break;
    case 88: // 'x'
     SetPos(lays[lay], GetX(lays[lay]), GetY(lays[lay])+(shift?10:1));
     break;
    case 79: // 'o'
    case 85: // 'u'
     SetVis(lays[lay]);
     break;
    case 73: // 'i'
     SetHide(lays[lay]);
     break;
    case 81: // 'q'
     lay++;
     if(lay==lays.length) { lay = 0; }
//     break;
    case 80: // 'p'
     var s ='<font class="typer1">';
     for(var i=0; i<lays.length; i++) 
      { 
       if(i==lay) { s += '<font class="typer2">("'+lays[i]+'", tab_left+'+(GetX(lays[i])-tab_left)+', tab_top+'+(GetY(lays[i])-tab_top)+")</font><br>"; }
       else { s += '("'+lays[i]+'", tab_left+'+(GetX(lays[i])-tab_left)+', tab_top+'+(GetY(lays[i])-tab_top)+")<br>"; }
      }
     s += '</font>';
     document.all.temp.innerHTML = s;
     break;
   }
 }

function PO(objname, dest)
 {
  var i, j, io;
  var s="[["+objname+"]] ->";
  var eo=eval(objname);
  var ss = String();
  var re = new RegExp('\n', 'g');
  io = (typeof(dest) == 'object');
  j = 0;
  for (i in eo)
   {
    x=eval(objname+"['"+i+"']");
    ss = "";
    ss += x;
    ss = ss.replace(re, ' ');
    if(ss.length>64) { ss = ss.substr(0, 60)+' ...'; }
    
    s=s+i+'='+ss+'   ';
    if(j == 1) { s += io?'<br>':'\n'; j = 0; }
    else { j ++; }
   }

  if(io) dest.innerHTML = s;
  else alert(s);
 }

////////////////// END DEBUG //////////////////////

  ///////////////////////////
 // Nagyon Common rutinok //
///////////////////////////
function Nop() {
}

function SetPos(ss, x, y) {
	eval(doc+ss+sty+"left="+x);
	eval(doc+ss+sty+"top="+y);
}

function SetPosVis(ss, x, y) {
	eval(doc+ss+sty+"left="+x);
	eval(doc+ss+sty+"top="+y);
	eval(doc+ss+sty+"visibility='visible'");
}

function SetVis(ss) {
	eval(doc+ss+sty+"visibility='visible'");
}

function SetHide(ss) {
	eval(doc+ss+sty+"visibility='hidden'");
}

function GetX(ss) {
	if(is.ie4) { return(eval("document.all['"+ss+"'].offsetLeft")); }
	else if(is.ns6) { return(eval("document.getElementById('"+ss+"').offsetLeft")); }
	else { return(eval("document."+ss+".pageX")); }
}

function GetY(ss) {
	if(is.ie4) { return(eval("document.all['"+ss+"'].offsetTop")); }
	else if(is.ns6) { return(eval("document.getElementById('"+ss+"').offsetTop")); }
else { return(eval("document."+ss+".pageY")); }
}

function ExGetXY(ss) {
	var ojjektum = eval(doc+ss+ojj);
	var prevname, nowname;
	var x = 0, y = 0;
//	var s = "";

	prevname = "";
	do {
		nowname = ojjektum.nodeName;

//		s += nowname+' ('+ojjektum.offsetLeft+'; '+ojjektum.offsetTop+') - '+ ojjektum.style.position + ' - '+ ojjektum.style.marginTop + '<br>';
		if(!((nowname == 'TBODY') || (nowname == 'FORM') || (nowname == 'TR') || ((nowname == 'A') && (prevname == 'IMG')))) {
			x += ojjektum.offsetLeft;
			y += ojjektum.offsetTop;
		}
		prevname = nowname;
		ojjektum = ojjektum.parentNode;
	} while(nowname != 'BODY');

//	eval(doc+'temp'+ojj+'.innerHTML = s');

	rv = new Object();
	rv.x = x;
	rv.y = y;

	return(rv);
}

function GetXs(ss) {
	if(is.ie4) return eval("document.all['"+ss+"'].offsetWidth");
	else if(is.ns6) return eval("document.getElementById('"+ss+"').offsetWidth");
	else return eval("document."+ss+".document.width");
}

function GetYs(ss) {
	if(is.ie4) return eval("document.all['"+ss+"'].offsetHeight");
	else if(is.ns6) return eval("document.getElementById('"+ss+"').offsetHeight");
	else return eval("document."+ss+".document.height");
}

function Clip(name, top, right, bottom, left) {
	if(is.ns4) {
		layer=eval(doc+name+sty+'clip');
		layer.top=top;
		layer.right=right;
		layer.bottom=bottom;
		layer.left=left;
	} else {
		eval(doc+name+sty+"clip='rect("+top+","+right+","+bottom+","+left+")'");
	}
}

function OverLayer(ss, x, y) {
	if(is.ie4) {
		x0=eval("document.all['"+ss+"'].offsetLeft");
		x1=x0+eval("document.all['"+ss+"'].offsetWidth");
		y0=eval("document.all['"+ss+"'].offsetTop");
		y1=y0+eval("document.all['"+ss+"'].offsetHeight");
	} else if(is.ns4) {
		x0=eval("document."+ss+".pageX");
		x1=x0+eval("document."+ss+".document.width");
		y0=eval("document."+ss+".pageY");
		y1=y0+eval("document."+ss+".document.height");
	} else {
		x0=eval("document.getElementById('"+ss+"').offsetLeft");
		x1=x0+eval("document.getElementById('"+ss+"').offsetWidth");
		y0=eval("document.getElementById('"+ss+"').offsetTop");
		y1=y0+eval("document.getElementById('"+ss+"').offsetHeight");
	}

	if(x>x0 && x<x1 && y>y0 && y<y1) return(1);
	else return(0);
}

function OpenPopup(htmname, winname, xs, ys, plus)
 {
  if(is.ns4) { FirstWin = window.open(htmname, winname, "width="+xs+",height="+ys+",screenX=1,screenY=1,status=0,resizeable=0"+plus)}
  else { FirstWin = window.open(htmname, winname, "width="+xs+",height="+ys+",status=0,resizeable=0"+plus) }
 }

function OpenGaleria(id)
 {
  OpenPopup('c-galeria.php?d_id='+id, 'compass_galeria', 750, 700, '');
 }

  /////////////////////////////////////////////
 //         OnLoad, OnUnload spread         //
/////////////////////////////////////////////
function bodyOnLoad()
 {
  for(var i = 0; i < EVl.length; i++)
   {
    EVl[i]();
   }
 }

function bodyRegisterOnLoad(funct)
 {
  if(typeof funct == 'function') EVl[EVl.length] = funct;
 }

function bodyOnUnload()
 {
  for(var i = 0; i < EVu.length; i++)
   {
    EVu[i]();
   }
 }

function bodyRegisterOnUnload(funct)
 {
  if(typeof funct == 'function') EVu[EVu.length] = funct;
 }

  /////////////////////////////////////////////
 //  Szimpla Button Hilightek               //
/////////////////////////////////////////////
function TButton(onimg, offimg, lay, img)
 {
  this.on = new Image();
  this.on.src = onimg;
  this.off = new Image();
  this.off.src = offimg;
  this.sc = is.ns4?'document.'+lay+'.document.'+img+'.src=obj.':'document.images.'+img+'.src=obj.';
 }

function HilButt(obj, onoff)
 {
  eval(obj.sc+onoff+'.src');
 }

  //////////////////////////
 //    Floating menuk    //
//////////////////////////
function FMInitialize()
 {
  FM = new FMConstructor();

  GM.AddEvent('Move', 'FM.MouseHandler', 'document');
  GM.AddEvent('Up', 'FM.MouseClick', 'document');
 }

function FMConstructor()
 {
  this.Look = Array();
  this.Menus = Array();
  this.hideproc = 0;
  this.leftlimit = 0;
  this.rightlimit = 800;

  this.AddNew = FMAddNew;
  this.MouseHandler = FMMouseHandler;
  this.MouseClick = FMMouseClick;
  this.MouseElhagyott = FMMouseElhagyott;
  this.On = FMOn;
  this.OnLevel = FMOnLevel;
  this.Hide = FMHide;
  this.Over = FMOver;
  this.SetLimits = FMSetLimits;
 }

/* Be: name, név1, link1, név2, link2, ...
link - ha "<sub>"-al kezdődik, akkor egy almenü neve lesz.

*/
function FMAddNew(name)
 {
  this.Menus[name] = new Object();

  this.Menus[name].name = name;
  this.Menus[name].labels = Array();
  this.Menus[name].lnks = Array();

  for(var i = 0; i < (arguments.length - 1) / 2; i ++)
   {
    this.Menus[name].labels[i] = arguments[i*2+1];
    this.Menus[name].lnks[i] = arguments[i*2+2];
   }
 }

function FMSetLimits(left, right)
 {
  this.leftlimit = left;
  this.rightlimit = right;
 }

function FMOn(name, rootname)
 {
  this.Hide(0);

  // A fless basz eltüntetése.
  var hb = eval(doc+"hbanner"+ojj);
  if(typeof hb != 'undefined' && hb != null) {
    eval(doc+"hbanner"+sty+"display='none'");
  }

  var r, xs;
  r = ExGetXY(rootname);
  this.Look[0] = new FMLookCreate('fmlayer0', this.Menus[name], 1, r.x, r.y+GetYs(rootname));
  if(((xs = GetXs('fmlayer0')) + r.x) > this.rightlimit) SetPos('fmlayer0', this.rightlimit - xs, r.y+GetYs(rootname))

  this.hideproc = 0;
 }

function FMOnLevel(name, level, imgname)
 {
  var r;

  this.Hide(level);
  r = ExGetXY(imgname);
  this.Look[level] = new FMLookCreate('fmlayer'+level, this.Menus[name], level, r.x, r.y);
  this.hideproc = 0;
 }

function FMHide(level)
 {
  // Bráner viszakapcsolása
  var hb = eval(doc+"hbanner"+ojj);
  if(level == 0 && typeof hb != 'undefined' && hb != null) {
    eval(doc+"hbanner"+sty+"display='block'");
  }

//  PO('FM.Look');
//  alert(this.Look.length);
  for(i = level; i < this.Look.length; i++)
   {
    if(typeof this.Look[i] == 'object')
     {
      SetHide(this.Look[i].layer);
      delete this.Look[i];
     }
   }
  this.Look.length = level;
 }

function FMMouseHandler(x, y)
 {
  if(this.Look.length == 0) return;
  if(this.hideproc == 0)
   {
    if(this.Over(x, y)) this.hideproc = 1;
   }
  else if(!this.Over(x, y)) setTimeout("FM.MouseElhagyott()", 300);
 }

function FMMouseClick(x, y)
 {
  if(this.Look.length == 0) return;
  if(!this.Over(x, y)) this.Hide(0);
 }

function FMMouseElhagyott()
  {
   if(this.hideproc) this.MouseClick(GM.x, GM.y);
  }

function FMOver(x, y)
 {
  for(i = 0; i < this.Look.length; i++)
   {
    if((typeof this.Look[i] == 'object') && OverLayer(this.Look[i].layer, x, y)) return true;
   }
  return false;
 }

/********** FMLook **********/
function FMLookCreate(layer, menu_ojj, level, x, y)
 {
  var s = "";
  var href, target;

  this.menu_ojj = menu_ojj;
  this.layer = layer;

  s += '<table border=0 cellpadding=0 cellspacing=0>\n';
  s += '<tr>\n';
  s += ' <td><img src="img/menu-eny.gif" width=5 height=5 border=0 alt=""></td>\n';
  s += ' <td background="img/menu-e.gif"><img src="img/null.gif" width=1 height=5 border=0 alt=""></td>\n';
  s += ' <td><img src="img/menu-ek.gif" width=5 height=5 border=0 alt=""></td>\n';
  s += '</tr>\n';

  for(var i = 0; i < menu_ojj.labels.length; i++)
   {
    href = menu_ojj.lnks[i];
    if(href.indexOf('<sub>') === 0)
     {
      href = "javascript:FM.OnLevel('"+href.substring(5, href.length)+"', "+level+", 'subimg"+level+"x"+i+"')";
      s += '<tr>\n';
      s += ' <td background="img/menu-ny.gif"><img src="img/null.gif" width=1 height=5 border=0 alt=""></td>\n';
      s += ' <td bgcolor="#000047">\n';
      s += '  <table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>\n';
      s += '   <td class=floatmenutd><a href="'+href+'" class="floatmenua">'+menu_ojj.labels[i]+'</a></td>\n';
      s += '   <td align="right"><img src="img/null.gif" width="3" height="9" border=0 alt=""><img src="img/menu-almenunyil.gif" width="9" height="9" border="0" alt="" id="subimg'+level+'x'+i+'"></td>\n';
      s += '  </tr></table>\n';
      s += ' </td>\n';
      s += ' <td background="img/menu-k.gif"><img src="img/null.gif" width="1" height="5" border="0" alt=""></td>\n';
      s += '</tr>\n';
     }
    else
     {
      if(href.indexOf('<blank>') === 0)
       {
        href = href.substring(7, href.length);
        target = 'target="_blank" ';
       }
      else target = '';
      s += '<tr>\n';
      s += ' <td background="img/menu-ny.gif"><img src="img/null.gif" width="1" height="5" border="0" alt=""></td>\n';
      s += ' <td bgcolor="#000047" class="floatmenutd"><a '+target+'href="'+href+'" class="floatmenua">'+menu_ojj.labels[i]+'</a></td>\n';
      s += ' <td background="img/menu-k.gif"><img src="img/null.gif" width="1" height="5" border="0" alt=""></td>\n';
      s += '</tr>\n';
     }
    if((i + 1) != menu_ojj.labels.length)
     {
      s += '<tr>\n';
      s += ' <td background="img/menu-elvalaszto.gif" colspan=3><img src="img/null.gif" width=1 height=3 border=0 alt=""></td>\n';
      s += '</tr>\n';
     }
   }

  s += '<tr>\n';
  s += ' <td><img src="img/menu-dny.gif" width=5 height=5 border=0 alt=""></td>\n';
  s += ' <td background="img/menu-d.gif"><img src="img/null.gif" width=1 height=5 border=0 alt=""></td>\n';
  s += ' <td><img src="img/menu-dk.gif" width=5 height=5 border=0 alt=""></td>\n';
  s += '</tr>\n';
  s += '</table>\n';

  eval(doc+layer+ojj+'.innerHTML = s');
  SetPosVis(layer, x, y);
 }


  ////////////////////////////////////////
 // Ezek globális Mouse kezelő rutinok //
////////////////////////////////////////
function GMouseInit()
 {
  this.x=0;
  this.y=0;
  this.GMove=GMouse;
  this.GDown=GOnDown;
  this.GUp=GOnUp;
  this.AddEvent=GAddEvent;
  this.DeleteEvent=GDeleteEvent;

  this.CmdMove=Array();
  this.CmdDown=Array();
  this.CmdUp=Array();

  this.AreaMove=Array();
  this.AreaDown=Array();
  this.AreaUp=Array();
 }

function CreateGMouse()
 {
  GM = new GMouseInit();

  if(is.ie4) 
   { 
    document.onmousemove = function a(e) { GM.GMove(event.x, event.y); };
    document.onmouseup = function a(e) { GM.GUp(event.x, event.y); };
    document.onmousedown = function a(e) { GM.GDown(event.x, event.y); };
   }
  else
   {
    document.onmousemove = function a(e) { GM.GMove(e.pageX, e.pageY); };
    document.onmouseup = function a(e) { GM.GUp(e.pageX, e.pageY); };
    document.onmousedown = function a(e) { GM.GDown(e.pageX, e.pageY); };
    document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP);
   }
 }

function DestroyGMouse(refer)
 {
  var obj=eval(refer);

  // Minden alapállásba!
  if(is.ns4)
   {
    document.releaseEvents();
   }
  document.onmouseup = null;
  document.onmousedown = null;
  document.onmousemove = null;

  delete GM;
 }

function GMouse(x, y)
 {
  var i;

  this.x=x;
  this.y=y;
  for(i=0; i<this.CmdMove.length; i++)
   {
    if(this.CmdMove[i] && (this.AreaMove[i] == 'document' || OverLayer(this.AreaMove[i], x, y))) { eval(this.CmdMove[i]+'(x,y);'); }
   }
 }

function GOnUp(x, y)
 {
  var i;

  for(i=0; i<this.CmdUp.length; i++)
   {
    if(this.CmdUp[i] && (this.AreaMove[i] == 'document' || OverLayer(this.AreaUp[i], x, y))) { eval(this.CmdUp[i]+'(x,y);'); }
   }
 }

function GOnDown(x, y)
 {
  var i;

  for(i=0; i<this.CmdDown.length; i++)
   {
    if(this.CmdDown[i] && (this.AreaMove[i] == 'document' || OverLayer(this.AreaDown[i], x, y))) { eval(this.CmdDown[i]+'(x,y);'); }
   }
 }

function GAddEvent(evnt, Func, ActionArea)
 {
  if(evnt!='Up' && evnt!='Down' && evnt!='Move') { return; }

  eval("this.Cmd"+evnt+"[this.Cmd"+evnt+".length]=Func;");
  eval("this.Area"+evnt+"[this.Area"+evnt+".length]=ActionArea;");
 }

function GDeleteEvent(evnt, Func)
 {
  if(evnt!='Up' && evnt!='Down' && evnt!='Move') { return; }

  var l = eval("this.Cmd"+evnt+".length");
  for(var i=0; i<l; i++)
   {
    if(eval("this.Cmd"+evnt+"[i]==Func"))
     {
      if(is.ie4)
       {
        eval("delete(this.Cmd"+evnt+"[i]);");
        eval("delete(this.Area"+evnt+"[i]);");
       }
      else
       {
        eval("this.Cmd"+evnt+".splice(i, 1);");
        eval("this.Area"+evnt+".splice(i, 1);");
       }
      break;
     }
   }
 }

  ////////////////////////////////////
 //     Cookie kezelő funkciók     //
////////////////////////////////////
function getCookie(name) {
	if(document.cookie.length > 0) {
		begin = document.cookie.indexOf(name + "=");
		if(begin != -1) {
			begin += name.length+1; 
			end = document.cookie.indexOf(";", begin);
			if (end == -1) end = document.cookie.length;
			return document.cookie.substring(begin, end);
		}
	}
	return null;
}

function setCookie(name, value, expiredays) {
	var ExpireDate = new Date();
	ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
	document.cookie = name + "=" + escape(value) + ((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString()+ "; path=/;");
}
