/**
 *  Client : Arthur Bonnet
 *  Projet : OUE571 - Refonte du portail web Arthur Bonnet
 *  Auteur : Julien Roulette
 *  Date : 12/11/2007
 *   
 *  Fonctionnalité : Fonctions JS de la page d'accueil
 *   
 */

var menus = new Array;

// trouve un objet dom dans la page courante
function MM_findObj(n, d) { //v4.01
    var p,i,x;  if(!d) d=document;
	if((p=n.indexOf("?"))>0&&parent.frames.length) {
	   d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	if(!(x=d[n])&&d.all) x=d.all[n];
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

// Dissimule tous les éléments d'une famille
function hidemenus(menu){
    var k=1;
    var hideobj = MM_findObj(menu+''+k);
    while(hideobj!=null){
        hideobj.style.display='none';
        k++;
        hideobj = MM_findObj(menu+''+k);
    }
}

// Affiche le menu ciblé en dissimulant les autres menus de la même famille
function showmenu(id,menu){
	if(menus[menu]==null) menus[menu]='1';
	var oldobj = MM_findObj(menu+''+menus[menu]);
	oldobj.style.display='none';
	var showobj = MM_findObj(menu+''+id);
	//showobj.style.display='block';
	new Effect.Appear(showobj);
	menus[menu]=id;
}

// Traitement rubriques bottom right
function bottom_right() {
    var szNormal = 115, szSmall  = 105, szFull   = 125;
	var kwicks = $$("#rub li a");
	var fx = new Fx.Elements(kwicks, {wait: false, duration: 300, transition: Fx.Transitions.Back.easeOut});
	kwicks.each(function(kwick, i) {
	   kwick.addEvent("mouseenter", function(event) {
    	   var o = {};
    	   o[i] = {width: [kwick.getStyle("width").toInt(), szFull]}
    	   kwicks.each(function(other, j) {
                if(i != j) {
                    var w = other.getStyle("width").toInt();
    			    if(w != szSmall) o[j] = {width: [w, szSmall]};
    			}
    	   });
    	   fx.start(o);
	   });
	});
	$("rub").addEvent("mouseleave", function(event) {
	   var o = {};
	   kwicks.each(function(kwick, i) {
	       o[i] = {width: [kwick.getStyle("width").toInt(), szNormal]}
	   });
	   fx.start(o);
	})
}

// initialisation ajax en fonction du navigateur
function createRequestObject()
{
    var http;
    if(window.XMLHttpRequest)
    { // Mozilla, Safari, ...
        http = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    { // Internet Explorer
        http = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return http;
}

/****************************************************************************************************************/
/*                                   	TRAITEMENT ZOOM SUR COLLECTION                                            */
/****************************************************************************************************************/
function ouvrirpopupzoomsur(){
	document.getElementById('iframe_zoomsur').src="?page=generer_zoom_sur&lang='#LANG'";
  	$('overlay').setStyle('opacity','0');
  	$('overlay').setStyle('display','block');
	var fx = new Fx.Styles($('overlay'), {duration:1000, wait:false});
	fx.start({'opacity': '0.8'});
		
  	$('page-popup-zoomsur').setStyle('opacity','0');
  	$('page-popup-zoomsur').setStyle('display','block');
	var fx = new Fx.Styles($('page-popup-zoomsur'), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
}

function ouvrirpopupzoomsuren(){
	document.getElementById('iframe_zoomsur').src="?page=generer_zoom_sur&lang=en";
  	$('overlay').setStyle('opacity','0');
  	$('overlay').setStyle('display','block');
	var fx = new Fx.Styles($('overlay'), {duration:1000, wait:false});
	fx.start({'opacity': '0.8'});
		
  	$('page-popup-zoomsur').setStyle('opacity','0');
  	$('page-popup-zoomsur').setStyle('display','block');
	var fx = new Fx.Styles($('page-popup-zoomsur'), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
}

function fermerpopupzoomsur(){
  	$('overlay').setStyle('display','none');
  	$('page-popup-zoomsur').setStyle('display','none');
  	var fx = new Fx.Styles($('page-popup-zoomsur'), {duration:200, wait:false});
	fx.start({'margin-top': 40});
}

// Chargement des diapos en ajax		
function gestionzoomsur()
{
    document.getElementById('page-popup-zoomsur').innerHTML = '<em>Chargement...</em>';
    http = createRequestObject();
    http.open('get', '?page=generer_zoom_sur', true);
    http.onreadystatechange = handleAJAXReturnZoomSur;
    http.send(null);
}

// Retour contenu ajax recharge
function handleAJAXReturnZoomSur()
{
    if(http.readyState == 4)
    {
        if(http.status == 200)
        {
            document.getElementById('page-popup-zoomsur').innerHTML = http.responseText;
        }
        else
        {
            document.getElementById('popup-zoomsur').innerHTML = "<em>Un probl&egrave;me technique est survenu.<br />Veuillez fermer cette fen&ecirc;tre.</em>";
        }
    }
}

// Chargement des onglets en ajax		
function gestionOngletsZoomSur(onglet)
{
    document.getElementById('article-zoomsur').innerHTML = '<em>Chargement...</em>';
    http = createRequestObject();
    http.open('get', '?page=generer_zoom_sur_contenu&idart='+onglet, true);
    http.onreadystatechange = handleAJAXReturnOngletZoomSur;
    http.send(null);
}

// Retour contenu ajax recharg		
function handleAJAXReturnOngletZoomSur()
{
    if(http.readyState == 4)
    {
        if(http.status == 200)
        {
            document.getElementById('article-zoomsur').innerHTML = http.responseText;
        }
        else
        {
            document.getElementById('article-zoomsur').innerHTML = "<em>Un probl&egrave;me technique est survenu.<br />Veuillez fermer cette fen&ecirc;tre.</em>";
        }
    }
}

// Dissimule tous les onglet
function countonglets(menu){
	var k=1;
	var hideobj = MM_findObj(menu+''+k);
	while(hideobj!=null){
		k++; sumonglet++;
		hideobj = MM_findObj(menu+''+k);
	}
}

// reallouer les onglets
function reallocate(){
	if(sumonglet>0){
		if(sumonglet>3||beginonglet==-1){
			if(beginonglet==-1) beginonglet=0;
			
			// nettoyage
			k=1;
			var addingzone = MM_findObj('all-onglets');
			var addingitem = MM_findObj('visu-onglet-'+k);
			while(addingitem!=null) {
				addingzone.appendChild(addingitem);
				k++;
				var addingitem = MM_findObj('visu-onglet-'+k);
			}
			
			// reallocation
			// #1
			beginonglet++;
			if(beginonglet>sumonglet) beginonglet=1;
			k=beginonglet;
			
			var addingzone = MM_findObj('onglet-1');
			var addingitem = MM_findObj('visu-onglet-'+k);
			addingzone.appendChild(addingitem);
			k++;
			if(k>sumonglet) k=1;
	
			if(sumonglet>1){
				// #2
				addingitem = MM_findObj('visu-onglet-'+k);
				addingzone = MM_findObj('onglet-2');
				addingzone.appendChild(addingitem);
				k++;
				if(k>sumonglet) k=1;
	
				if(sumonglet>2){
					// #3
	    			addingitem = MM_findObj('visu-onglet-'+k);
					addingzone = MM_findObj('onglet-3');
					addingzone.appendChild(addingitem);
				}
			}
		}
	}
}

/****************************************************************************************************************/
/*                                   	TRAITEMENT DIAPOS COLLECTION                                            */
/****************************************************************************************************************/
// ouverture de la diapo associée à la cuisine
function ouvrirpopupdiapo(vr){
	gestiondiapo(vr);

	menus['diapo-']=1;
	
	$('overlay').setStyle('opacity','0');
	$('overlay').setStyle('display','block');
	var fx = new Fx.Styles($('overlay'), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
	
	$('page-popup').setStyle('opacity','0');
	$('page-popup').setStyle('display','block');
	var fx = new Fx.Styles($('page-popup'), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
}

function ouvrirpopupdiapo_en(vr){
	gestiondiapo_en(vr);

	menus['diapo-']=1;
	
	$('overlay').setStyle('opacity','0');
	$('overlay').setStyle('display','block');
	var fx = new Fx.Styles($('overlay'), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
	
	$('page-popup').setStyle('opacity','0');
	$('page-popup').setStyle('display','block');
	var fx = new Fx.Styles($('page-popup'), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
}

// fermeture de la diapo
function fermerpopupdiapo(){
	$('overlay').setStyle('display','none');
	$('page-popup').setStyle('display','none');
	var fx = new Fx.Styles($('page-popup'), {duration:200, wait:false});
	fx.start({'margin-top': 40});
}
          
// Chargement des diapos en ajax		
function gestiondiapo(id)
{
    document.getElementById('diapo').innerHTML = '<em>Chargement...</em>';
    http = createRequestObject();
    http.open('get', '/squelettes/php/generer_diapo.php?idcuisine='+id, true);
    http.onreadystatechange = handleAJAXReturnDiapo;
    http.send(null);
}

function gestiondiapo_en(id)
{
    document.getElementById('diapo').innerHTML = '<em>Chargement...</em>';
    http = createRequestObject();
    http.open('get', '/squelettes/php/generer_diapo_en.php?idcuisine='+id, true);
    http.onreadystatechange = handleAJAXReturnDiapo;
    http.send(null);
}

// Retour contenu ajax recharg		
function handleAJAXReturnDiapo()
{
    if(http.readyState == 4)
    {
        if(http.status == 200)
        {
            document.getElementById('diapo').innerHTML = http.responseText;
            hidemenusdiapo('diapo-');
        }
        else
        {
            document.getElementById('diapo').innerHTML = "<em>Un probl&egrave;me technique est survenu.<br />Veuillez fermer cette fen&ecirc;tre.</em>";
        }
    }
}

// Dissimule tous les éléments d'une famille sauf le premier
function hidemenusdiapo(menu){
    var k=2;
    var hideobj = MM_findObj(menu+''+k);
    while(hideobj!=null){
        hideobj.style.display='none';
        k++;
        hideobj = MM_findObj(menu+''+k);
    }
}

	   	  
// Affiche le menu ciblé en dissimulant les autres menus de la même famille
function prevdiapo(menu){
	if(menus[menu]==null) menus[menu]=1;
	
	id=menus[menu]-1;
	var showobj = MM_findObj(menu+''+id);
	
	if(showobj!=null){
			var oldobj = MM_findObj(menu+''+menus[menu]);
		oldobj.style.display='none';
	var fx = new Fx.Styles($('onglet-diapo-'+menus[menu]), {duration:200, wait:false});
	fx.start({'color': '#173439', 'background-color': '#ffffff', 'border-top-color': '#173439', 'border-bottom-color': '#173439', 'border-left-color': '#173439', 'border-right-color': '#173439'});
	
		var showobj = MM_findObj(menu+''+id);
		$(menu+''+id).setStyle('opacity','0');
	var fx = new Fx.Styles($(menu+''+id), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
	
		showobj.style.display='block';
	var fx = new Fx.Styles($('onglet-diapo-'+id), {duration:200, wait:false});
	fx.start({'color': '#ffffff', 'background-color': '#173439', 'border-top-color': '#ffffff', 'border-bottom-color': '#ffffff', 'border-left-color': '#ffffff', 'border-right-color': '#ffffff'});
	
		menus[menu]-=1;
	}
}

// Affiche le menu ciblé en dissimulant les autres menus de la même famille
function nextdiapo(menu){
	if(menus[menu]==null) menus[menu]=1;
	
	id=menus[menu]+1;
	var showobj = MM_findObj(menu+''+id);
	
	if(showobj==null){
		id=1;
	}
		var oldobj = MM_findObj(menu+''+menus[menu]);
		oldobj.style.display='none';
	var fx = new Fx.Styles($('onglet-diapo-'+menus[menu]), {duration:200, wait:false});
	fx.start({'color': '#173439', 'background-color': '#ffffff', 'border-top-color': '#173439', 'border-bottom-color': '#173439', 'border-left-color': '#173439', 'border-right-color': '#173439'});
	
		var showobj = MM_findObj(menu+''+id);
		$(menu+''+id).setStyle('opacity','0');
	var fx = new Fx.Styles($(menu+''+id), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
	
		showobj.style.display='block';
	var fx = new Fx.Styles($('onglet-diapo-'+id), {duration:200, wait:false});
	fx.start({'color': '#ffffff', 'background-color': '#173439', 'border-top-color': '#ffffff', 'border-bottom-color': '#ffffff', 'border-left-color': '#ffffff', 'border-right-color': '#ffffff'});
	
	menus[menu]=id;
}

// Affiche le menu ciblé en dissimulant les autres menus de la même famille
function chgmenu(menu,id){
	if(menus[menu]==null) menus[menu]=1;
	
	var showobj = MM_findObj(menu+''+id);
	
	if(showobj!=null){
		var oldobj = MM_findObj(menu+''+menus[menu]);
		oldobj.style.display='none';
	var fx = new Fx.Styles($('onglet-diapo-'+menus[menu]), {duration:200, wait:false});
	fx.start({'color': '#173439', 'background-color': '#ffffff', 'border-top-color': '#173439', 'border-bottom-color': '#173439', 'border-left-color': '#173439', 'border-right-color': '#173439'});
	
		var showobj = MM_findObj(menu+''+id);
		$(menu+''+id).setStyle('opacity','0');
	var fx = new Fx.Styles($(menu+''+id), {duration:1000, wait:false});
	fx.start({'opacity': '1'});
	
		showobj.style.display='block';
	var fx = new Fx.Styles($('onglet-diapo-'+id), {duration:200, wait:false});
	fx.start({'color': '#ffffff', 'background-color': '#173439', 'border-top-color': '#ffffff', 'border-bottom-color': '#ffffff', 'border-left-color': '#ffffff', 'border-right-color': '#ffffff'});
		//showongl.className='current';
	
		menus[menu]=id;
	}
}

/****************************************************************************************************************/
/*                                       STYLE SCROLLBAR DEFILEMENT                                             */
/****************************************************************************************************************/
var cds = {
	O  : [],
	ok : false,
	ym : 0,
	N  : 0,
	fo : 0,
	sc : 0,
	sp : 0,
	to : 0,
	/* on mouse move */
	m_move : function(e) {
		if (!e) e = window.event;
		/* release drag outside of the window - IE only */
		if (cds.fo.sg && !cds.w3c && !e.button) { cds.m_up(); return; }
		/* vertical mouse position */
		cds.ym = e.screenY;
		/* drag scrollbar */
		if (cds.fo.sg) cds.fo.scrollTop = cds.fo.sZ + (cds.ym - cds.fo.yZ) / cds.fo.r;
	},
	/* on mouse up */
	m_up : function (e) {
		if (!e) e = window.event;
		var tg = (e.target) ? e.target : e.srcElement;
		/* clear and skin scrollbar */
		if (cds.fo) cds.fo.sb.className = (tg.className.indexOf('scrollbar') > 0) ? 'cds_scrollbar cds_scrollbar_over' : 'cds_scrollbar';
		document.onselectstart = '';
		cds.clr();
		cds.fo.sg = false;
	},
	/* clear */
	clr : function () {
		clearTimeout(cds.to);
		cds.sc = 0;
		return false;
	},
	/* refresh all scrollbars */
	refresh : function () {
		for (var i = 0, N = cds.N; i < N; i++) {
			var o = cds.O[i];
			o.v_scroll();
			o.sb.style.width = o.st.style.width = o.su.style.width = o.su.style.height = o.sd.style.width = o.sd.style.height = o.w + 'px';
			o.sb.style.height = Math.ceil(Math.max(o.w * .5, o.r * o.offsetHeight) + 1) + 'px';
		}
	},
	/* arrows scrolling loop */
	a_scroll : function () {
		if (cds.sc != 0) {
			cds.fo.scrollTop += 6 * cds.sc / cds.fo.r;
			cds.to = setTimeout(cds.a_scroll, cds.sp);
			cds.sp = 32;
		}
	},
	/* start arrows scrolling */
	m_down : function (o, s) {
		if (cds.sc == 0) {
			o.dv.sb.className = 'cds_scrollbar cds_scrollbar_pushed';
			cds.fo = o.dv;
			cds.sc = s;
			cds.sp = 400;
			cds.a_scroll();
		}
	},
	/* init script */
	init : function () {
		if (window.oper || (!window.addEventListener && !window.attachEvent)) { this.ok = false; return; }
		/* add events */
		function addEvent (o, e, f) {
			if (window.addEventListener) { o.addEventListener(e, f, false); cds.w3c = true; return true; }
			if (window.attachEvent) return o.attachEvent('on' + e, f);
			return false;
		}
		this.ok = addEvent(window.document, 'mousemove', cds.m_move);
		this.ok = addEvent(window.document, 'mouseup', cds.m_up);
		this.ok = addEvent(window, 'resize', cds.refresh);
		return this.ok;
	},
	/* add skinable scrollbar */
	add : function (id) {
		/* get div */
		var dv = document.getElementById(id);
		/* init script */
		if (!cds.ok) cds.init();
		/* return on error */
		if (!cds.ok || !dv) return false;
		/* append div function */
		function cDiv (c) {
			var o = document.createElement('div');
			o.dv = dv;
			o.className = c;
			dc.appendChild(o);
			return o;
		}
		/* clone the original div to create an empty container */
		var dc = dv.cloneNode(false);
		dc.style.overflow = "hidden";
		/* insert the container into the div's parent */
		dv.parentNode.appendChild(dc);
		/* move the original div into the container */
		dc.appendChild(dv);
		/* modify its positionning to fit into the container */
		dv.style.position = 'absolute';
		dv.style.left = dv.style.top = '0px';
		dv.style.width = dv.style.height = '100%';
		/* push div reference in array */
		cds.O[cds.N++] = dv;
		dv.sg = false;
		/* create and append skinned scrollbar HTML elements to the container, on top of the original div */
		dv.st = cDiv('cds_track');
		dv.sb = cDiv('cds_scrollbar');
		dv.su = cDiv('cds_up');
		dv.sd = cDiv('cds_down');
		/* scrollbar on mouse down */
		dv.sb.onmousedown = function (e) {
			if (!this.dv.sg) {
				if (!e) e = window.event;
				/* save active/scrollable div */
				cds.fo = this.dv;
				/* save vertical mouse and scroll position */
				this.dv.yZ = e.screenY;
				this.dv.sZ = dv.scrollTop;
				this.dv.sg = true;
				/* pushed skin */
				this.className = 'cds_scrollbar cds_scrollbar_pushed';
				document.onselectstart = function () { return false; }
			}
			return false;
		}
		/* track on mouse down */
		dv.st.onmousedown = function (e) {
			if (!e) e = window.event;
			/* save active/scrollable div */
			cds.fo = this.dv;
			/* calculate scrollbar position */
			cds.ym = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
			for (var o = this.dv, y = 0; o != null; o = o.offsetParent) y += o.offsetTop;
			this.dv.scrollTop = (cds.ym - y - (this.dv.r * this.dv.offsetHeight / 2) - this.dv.w) / this.dv.r;
			this.dv.sb.onmousedown(e);
		}
		/* arrows on mouse down */
		dv.su.onmousedown = dv.su.ondblclick = function (e) { cds.m_down(this, -1); return false; }
		dv.sd.onmousedown = dv.sd.ondblclick = function (e) { cds.m_down(this,  1); return false; }
		/* release events */
		dv.su.onmouseout = dv.su.onmouseup = cds.clr;
		dv.sd.onmouseout = dv.sd.onmouseup = cds.clr;
		/* scrollbar on mouse over skin */
		dv.sb.onmouseover = function (e) {
			if (!this.dv.sg) this.className = 'cds_scrollbar cds_scrollbar_over';
			return false;
		}
		/* scrollbar on mouse out (default) skin */
		dv.sb.onmouseout  = function (e) {
			if (!this.dv.sg) this.className = 'cds_scrollbar';
			return false;
		}
		/* scrollbar repositionning */
		dv.v_scroll = function () {
			this.r = (this.offsetHeight - 2 * this.w) / this.scrollHeight;
			this.sb.style.top = Math.floor(this.w + this.scrollTop * this.r) + 'px';
		}
		/* calculate scrollbar width */
		dv.w = dv.offsetWidth - dv.clientWidth + 1;
		/* init scroll */
		dv.v_scroll();
		cds.refresh();
		/* hook on scroll browser's event */
		dv.onscroll = dv.v_scroll;
		return dv;
	}
} 
 

