var isDOM=document.getElementById?1:0,
 isIE=document.all?1:0,
 isNS4=navigator.appName=='Netscape'&&!isDOM?1:0,
 isOp=self.opera?1:0,
 isDyn=isDOM||isIE||isNS4;

function getRef(i, p)
{
 p=!p?document:p.navigator?p.document:p;
 return isIE ? p.all[i] :
  isDOM ? (p.getElementById?p:p.ownerDocument).getElementById(i) :
  isNS4 ? p.layers[i] : null;
};

function getSty(i, p) { var r=getRef(i, p); return r?isNS4?r:r.style:null; };
if (!self.LayerObj) var LayerObj = new Function('i', 'p', 'this.ref=getRef(i, p); this.sty=getSty(i, p); return this');
function getLyr(i, p) { return new LayerObj(i, p) };
function LyrFn(n, f) {LayerObj.prototype[n] = new Function('var a=arguments,p=a[0],px=isNS4||isOp?0:"px"; ' +  'with (this) { '+f+' }'); };
LyrFn('x','if (!isNaN(p)) sty.left=p+px; else return parseInt(sty.left)');
LyrFn('y','if (!isNaN(p)) sty.top=p+px; else return parseInt(sty.top)');
var aeOL = [];
function addEvent(o, n, f, l)
{
 var a = 'addEventListener', h = 'on'+n, b = '', s = '';
 if (o[a] && !l) return o[a](n, f, false);
 o._c |= 0;
 if (o[h]) { b = '_f' + o._c++; o[b] = o[h];}
 s = '_f' + o._c++;
 o[s] = f;
 o[h] = function(e) 
 { 
	 e = e || window.event; 
	 var r = true; 
	 if (b) r = o[b](e) != false && r; 
	 if (o[s] != null )  { r = ( o[s](e) != false)  &&  r;  }
	 return r; 
 };
 aeOL[aeOL.length] = { o: o, h: h };
};
addEvent(window, 'unload', function() { for (var i = 0; i < aeOL.length; i++) with (aeOL[i]) { o[h] = null; for (var c = 0; o['_f' + c]; c++) o['_f' + c] = null;} });

function FSMenu(myName, nested, cssProp, cssVis, cssHid)
{
 this.myName = myName;
 this.nested = nested;
 this.cssProp = cssProp;
 this.cssVis = cssVis;
 this.cssHid = cssHid;
 this.cssLitClass = '';
 this.menus = { root: new FSMenuNode('root', true, this) };
 this.menuToShow = [];
 this.mtsTimer = null;
 this.showDelay = 0;
 this.switchDelay = 125;
 this.hideDelay = 10;
 this.showOnClick = 1;
 this.animations = [];
 this.animSpeed = 100;
 // Le fonction qui sera appelée
 this.command 	= "";
 // Le header du popup menu
 this.sexe 		= "";
 // Les arguments des différentes fonctions
 this.user		= "";
 // Les arguments des différentes fonctions
 this.pseudo		= "";
 // Free memory onunload in IE.
 if (isIE && !isOp) addEvent(window, 'unload', new Function(myName + ' = null'));
};

FSMenu.prototype.set_root = function(mN) { with (this)
{
	var txt_root = getRef("root_info");
	txt_root.innerHTML =this.sexe;
}};

FSMenu.prototype.exec = function(mN) { with (this)
{
	// Découper la chaine User pour mettre les différents paramètres :  recnum;pseudo;sexe;certifie;last_cnx;cnx;
	var argument = new Array();
	argument = this.user.split(";")
	recnum 	= argument[0]; 
	pseudo 	= argument[1]; 
	sexe 	= argument[2]; 
	certifie= argument[3];
	last_cnx= argument[4];
	cnx		= argument[5];
	status	= argument[6];
	
	if ( command == "open")
	{
		try 
		{
			parent.pages.location = cfg['pages']+"fiche.php?recnum="+recnum; 
		} catch(e) {}
	}
	if ( command == "msg")
	{
		try 
		{
			parent.pages.tchat.build(recnum, pseudo);
			
		}  catch(e) {}
	}
	if ( command == "mail")
	{
		try	
		{
			parent.pages.message.build(recnum, pseudo);
		}  
		catch(e) 
		{
			alert(e.message);
		}
	}
	if ( command == "webcam" )
	{
		// onlinelist.cam_popup = window.open( "tchat_room.php?salon="+gi_user+"",'_blank','width=820,height=600,toolbar=no,status=yes,scrollbars=yes,menubar=no' ); 
		//onlinelist.cam_popup = window.open( "tchat_room.php?salon="+recnum+"",'_blank','width=820,height=600,toolbar=no,status=yes,scrollbars=yes,menubar=no' ); 
		onlinelist.cam_popup = window.open( "room_"+recnum+".php",'_blank','width=820,height=600,toolbar=no,status=yes,scrollbars=yes,menubar=no' ); 
	}
	
	/*
	if ( command == "contact")
	{
		try {parent.pages.location="../messagerie/ajoute_contacts.php?carnet=A&rec_contact="+recnum+"&pseudo_contact="+pseudo;}  catch(e) {}
	}
	if ( command == "black")
	{
		try	{parent.pages.location="../messagerie/ajoute_indesirable.php?carnet=I&rec_contact="+recnum+"&pseudo_contact="+pseudo;}  catch(e) {}
	}
	*/
}};

FSMenu.prototype.show = function(mN) { with (this)
{
	var argument = new Array();
	argument = this.user.split(";")
	recnum 	= argument[0]; 
	pseudo 	= argument[1]; 
	sexe 	= argument[2]; 
	certifie= argument[3];
	last_cnx= argument[4];
	cnx		= argument[5];
	status	= argument[6];
	nb_photo= argument[7];
	webcam	= argument[8];
	wonline	= argument[9];

	if ( wonline > 0 )
	{
		$("mwebcam").style.display="inline";
	}
	else
	{
		$("mwebcam").style.display="none";
	}
	
	/*
	var menu_webcam = getRef("Onwebcam");
	if ( webcam > 0 )
	{
		if ( wonline == 0 ) menu_webcam.innerHTML ="<a class='menulist mswr' href='javascript:divMenu.exec()' onmouseover=\"divMenu.command='webcam'\"  onmouseout=\"divMenu.command=''\">Tchat privé Fermé !</a>";
		else menu_webcam.innerHTML = "<a class='menulist msw' href='javascript:divMenu.exec()' onmouseover=\"divMenu.command='webcam'\"  onmouseout=\"divMenu.command=''\">Tchat privé</a>";
		menu_webcam.style.display="block";
	}
	else { menu_webcam.style.display="none"; }
	*/

	
 // Set menuToShow to the function parameters. Use a loop to copy values so we don't leak memory.
 menuToShow.length = arguments.length;
 for (var i = 0; i < arguments.length; i++) menuToShow[i] = arguments[i];
 clearTimeout(mtsTimer);
 if (!nested) mtsTimer = setTimeout(myName + '.menus.root.over()', 10);
}};

FSMenu.prototype.hide = function(mN) { with (this) {clearTimeout(mtsTimer);if (menus[mN]) menus[mN].out();}};

function FSMenuNode(id, isRoot, obj)
{
 this.id = id;
 this.isRoot = isRoot;
 this.obj = obj;
 this.lyr = this.child = this.par = this.timer = this.visible = null;
 this.args = [];
 var node = this;

 this.over = function(evt) { with (node) with (obj)
 {
  if (isNS4 && evt && lyr.ref) lyr.ref.routeEvent(evt);
  clearTimeout(timer);
  clearTimeout(mtsTimer);
  if (!isRoot && !visible) node.show();
  if (menuToShow.length)
  {
   var a = menuToShow, m = a[0];
   if (!menus[m] || !menus[m].lyr.ref) menus[m] = new FSMenuNode(m, false, obj);
   var c = menus[m];
   if (c == node) { menuToShow.length = 0; return;}
   clearTimeout(c.timer);
   if (c != child && c.lyr.ref)
   {
    c.args.length = a.length;
    for (var i = 0; i < a.length; i++) c.args[i] = a[i];
    var delay = child ? switchDelay : showDelay;
    c.timer = setTimeout('with(' + myName + ') { menus["' + c.id + '"].par = menus["' + node.id + '"]; menus["' + c.id + '"].show() }', delay ? delay : 1);
   }
   menuToShow.length = 0;
  }
  if (!nested && par) par.over();
 }};

 this.out = function(evt) { with (node) with (obj)
 {
  if (isNS4 && evt && lyr && lyr.ref) lyr.ref.routeEvent(evt);
  clearTimeout(timer);
  if (!isRoot)
  {
   timer = setTimeout(myName + '.menus["' + id + '"].hide()', hideDelay);
   if (!nested && par) par.out();
  }
 }};

 if (this.id != 'root') with (this) with (lyr = getLyr(id)) if (ref)
 {
  if (isNS4) ref.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
  addEvent(ref, 'mouseover', this.over);
  addEvent(ref, 'mouseout', this.out);
  if (obj.nested) { addEvent(ref, 'focus', this.over);addEvent(ref, 'click', this.over);addEvent(ref, 'blur', this.out); }
 }
};

FSMenuNode.prototype.show = function() { with (this) with (obj)
{
 if (!lyr || !lyr.ref) return;
 if (par)
 {
  if (par.child && par.child != this) par.child.hide();
  par.child = this;
 }

 var offR = args[1], offX = args[2], offY = args[3], lX = 0, lY = 0,  doX = ''+offX!='undefined', doY = ''+offY!='undefined';
 if (self.page && offR && (doX||doY))
 {
  with (page.elmPos(offR, par.lyr ? par.lyr.ref : 0)) lX = x, lY = y;
  if (doX) lyr.x(lX + eval(offX));
  if (doY) lyr.y(lY + eval(offY) - $("tchat").scrollTop  );
 }
 if (offR) lightParent(offR, 1);
 visible = 1;
 if (obj.onshow) obj.onshow(id);
 setVis(1);
}};

FSMenuNode.prototype.hide = function() { with (this) with (obj)
{
 if (!lyr || !lyr.ref) return;
 if (isNS4 && self.isMouseIn && isMouseIn(lyr.ref)) return show();
 if (args[1]) lightParent(args[1], 0);
 if (child) child.hide();
 if (par && par.child == this) par.child = null;
 if (lyr)
 {
  visible = 0;
  if (obj.onhide) obj.onhide(id);
  setVis(0);
 }
}};

FSMenuNode.prototype.lightParent = function(elm, lit) { with (this) with (obj)
{
 if (!cssLitClass || isNS4) return;
 if (lit) elm.className += (elm.className?' ':'') + cssLitClass;
 else elm.className = elm.className.replace(new RegExp('(\\s*' + cssLitClass + ')+$'), '');
}};


FSMenuNode.prototype.setVis = function(sh) { with (this) with (obj)
{
 lyr.timer |= 0;
 lyr.counter |= 0;
 with (lyr)
 {
  clearTimeout(timer);
  if (sh && !counter) sty[cssProp] = cssVis;
  if (isDOM && animSpeed < 100)
   for (var a = 0; a < animations.length; a++) animations[a](ref, counter);

  counter += animSpeed*(sh?1:-1);
  if (counter>100) { counter = 100 }
  else if (counter<=0) { counter = 0; sty[cssProp] = cssHid }
  else if (isDOM)
   timer = setTimeout(myName + '.menus["' + id + '"].setVis(' + sh + ')', 50);
 }
}};

FSMenu.prototype.activateMenu = function(id, subInd) { with (this)
{
 if (!isDOM || !document.documentElement) return;
 var a, ul, li, parUL, mRoot = getRef(id), nodes, count = 1;
 if (isIE)
 {
  var aNodes = mRoot.getElementsByTagName('a');
  for (var i = 0; i < aNodes.length; i++)
  {
   addEvent(aNodes[i], 'focus', new Function('e', 'var node = this.parentNode; while(node) { ' + 'if (node.onfocus) setTimeout(node.onfocus, 1, e); node = node.parentNode }'));
   addEvent(aNodes[i], 'blur', new Function('e', 'var node = this.parentNode; while(node) { ' + 'if (node.onblur) node.onblur(e); node = node.parentNode }'));
  }
 }
 var lists = mRoot.getElementsByTagName('ul');
 for (var i = 0; i < lists.length; i++)
 {
  li = ul = lists[i];
  while (li)
  {
   if (li.nodeName.toLowerCase() == 'li') break;
   li = li.parentNode;
  }
  if (!li) continue;
  parUL = li;
  while (parUL)
  {
   if (parUL.nodeName.toLowerCase() == 'ul') break;
   parUL = parUL.parentNode;
  }
  a = null;
  for (var j = 0; j < li.childNodes.length; j++)
   if (li.childNodes[j].nodeName.toLowerCase() == 'a') a = li.childNodes[j];
  if (!a) continue;

  var menuID = myName + '-id-' + count++;
  if (ul.id) menuID = ul.id;
  else ul.setAttribute('id', menuID);
  var sOC = (showOnClick == 1 && li.parentNode == mRoot) || (showOnClick == 2);
  var eShow = new Function('with (' + myName + ') { ' +
   'var m = menus["'+menuID+'"], pM = menus["' + parUL.id + '"];' +
   (sOC ? 'if ((pM && pM.child) || (m && m.visible))' : '') +
   ' show("' + menuID + '", this) }');
  var eHide = new Function(myName + '.hide("' + menuID + '")');
  addEvent(a, 'mouseover', eShow);
  addEvent(a, 'focus', eShow);
  addEvent(a, 'mouseout', eHide);
  addEvent(a, 'blur', eHide);
  if (sOC) addEvent(a, 'click', new Function('e', myName + '.show("' + menuID +
   '", this); if (e.cancelable && e.preventDefault) e.preventDefault(); ' +
   'e.returnValue = false; return false'));

  if (subInd) a.insertBefore(subInd.cloneNode(true), a.firstChild);
 }

 menus[id] = new FSMenuNode(id, true, this);
}};

if (!self.page) var page = { win:self, minW:0, minH:0, MS:isIE&&!isOp };
page.elmPos=function(e,p)
{
 var x=0,y=0,w=p?p:this.win;
 e=e?(e.substr?(isNS4?w.document.anchors[e]:getRef(e,w)):e):p;
 if(isNS4){if(e&&(e!=p)){x=e.x;y=e.y};if(p){x+=p.pageX;y+=p.pageY}}
 if (e && this.MS && navigator.platform.indexOf('Mac')>-1 && e.tagName=='A')
 {
  e.onfocus = new Function('with(event){self.tmpX=clientX-offsetX;' + 'self.tmpY=clientY-offsetY}');
  e.focus();x=tmpX;y=tmpY;e.blur()
 }
 else while(e){x+=e.offsetLeft;y+=e.offsetTop;e=e.offsetParent}
 
 return{x:x,y:y};
};

if (isNS4)
{
 var fsmMouseX, fsmMouseY, fsmOR=self.onresize, nsWinW=innerWidth, nsWinH=innerHeight;
 document.fsmMM=document.onmousemove;
 self.onresize = function() {if (fsmOR) fsmOR(); if (nsWinW!=innerWidth || nsWinH!=innerHeight) location.reload();};
 document.captureEvents(Event.MOUSEMOVE);
 document.onmousemove = function(e) {fsmMouseX = e.pageX; fsmMouseY = e.pageY; return document.fsmMM?document.fsmMM(e):document.routeEvent(e);};
 function isMouseIn(sty) {with (sty) return ((fsmMouseX>left) && (fsmMouseX<left+clip.width) && (fsmMouseY>top) && (fsmMouseY<top+clip.height));};
}

