///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
// lightbox.js
///////////////////////////////////////////////////////////////////////

// Attention changer ces valeurs peut avoir un effet byzarre sur les story d�ja existants
WS_MinMediaLength = 25;							// Dur�e minimum d'affichage d'un m�dia
WS_MaxTrsLength = 50;							// Dur�e maximum de la transition


function oLightBox()
{
	this.isActive = bUserLoggedIn;				// est ce que la light est active (mode spécial utilisé lorsque l'utilisateur n'est pas connecté)
	this.tUserDrag = [];					// tableau des objet drag and droppé depuis la page (hors vignette bank)
	this.lbType = 1;						// type d'affichage de light baket, lightbox ou story editor
	this.visibility = true;				// défini si la lightbox est ouverte ou fermée
	this.visible = true;					// defini si la light box est entierement visible (si visibility = true) ou entièrement non visible (si visibility = false)

	this.activeLB = 0;					// numero de la lightbox active
	this.tListDesc = [];					// list des lightBox (les noms des lightbox)
	this.tActiveLB = [];					// tableau des lightbox (le contenu)
	this.tChangeLB = [];					// tableau des flag de changement
	this.tMd5LB = [];				      	// tableau des code MD5 des lightbox
	this.tKeepSelLightBox = [0, 0, 0];            // conservation des listes selectionnées

	this.startKey = '';
	this.activeMoving = false;
	this.activeVign = null;
	this.activeVignSrc = '';
	this.posout = 0;
	this.origin_caddie_x = 0;
	this.origin_caddie_y = 0;
	this.origin_caddie_width = 0;
	this.origin_caddie_height = 0;
	this.position = 'off';
	this.updownmk = 0;
	this.scrollH = 0;
	this.htmlObj = null;
	this.selSheet = 1;
	this.overSheet = -1;
}

function GLB_ResetList0()
{
	this.tActiveLB[0] = [];																// on crée une lightbox vide
	this.tActiveLB[0][0] = [];															// canal1
	this.tActiveLB[0][1] = [];															// canal2
}
oLightBox.prototype.ResetList0 = GLB_ResetList0;

function GLB_UpToTimeLB(idlb)
{
    this.tChangeLB[idlb] = false;
}
oLightBox.prototype.UpToTimeLB = GLB_UpToTimeLB;

function GLB_ChangeLB(idlb)
{
    this.tChangeLB[idlb] = true;
}
oLightBox.prototype.ChangeLB = GLB_ChangeLB;

function GLB_Init(open)
{
	if (!this.isActive)
	{
		getObj('lightbox_select').style.display = 'none';
		getObj('lightbox_info').style.display = 'none';
		getObj('lightbox_action').style.display = 'none';
	}

    // added by Karine to make the LB open by default
    //    open = true; 
    // 
    var openlb = getCookie('lb_hideshow');
    var cookopen = (open)?'open':'hide';
    if (openlb == null)
        cookopen = 'open';
    else
        cookopen = openlb;
    
	if (cookopen == 'hide')
	{
		this.visibility = false;
		this.visible = true;
		this.Hide();
	}
	else
	{
		this.visibility = true;
		this.visible = false;
		this.Show();
	}
	this.origin_caddie_width = parseInt(getCSSValue('#caddie', 'width'), 10);
	this.origin_caddie_height = parseInt(getCSSValue('#caddie', 'height'), 10);
	this.origin_caddie_x = parseInt(getCSSValue('#caddie', 'left'), 10);
	this.origin_caddie_y = parseInt(getCSSValue('#caddie', 'top'), 10);
}
oLightBox.prototype.Init = GLB_Init;

function GLB_SwapState()
{
	if (this.visibility)
	{
		this.visibility = false;
		this.Hide();
	}
	else
	{
		this.visibility = true;
		this.Show();
	}
}
oLightBox.prototype.SwapState = GLB_SwapState;

function GLB_Show()
{
	if(!this.visible)
	{
 		var inner_lb = getObj('lightbox');
		inner_lb.style.display = '';
		this.visible = true;
        var openlb = getCookie('lb_hideshow');
        if (openlb != this.visible)
        {
            var now = new Date();
            fixDate(now);
            now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
            setCookie('lb_hideshow', 'open', now, '/');
        }
		this.SetLightBox();
	}
}
oLightBox.prototype.Show = GLB_Show;

function GLB_Hide()
{
	if ((this.visible) && (!this.visibility))
	{
		var inner_lb = getObj('lightbox');
		inner_lb.style.display = 'none';
		this.visible = false;
        var openlb = getCookie('lb_hideshow');
        if (openlb != this.visible)
        {
            var now = new Date();
            fixDate(now);
            now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
            setCookie('lb_hideshow', 'hide', now, '/');
        }
		this.SetLightBox();
	}
}
oLightBox.prototype.Hide = GLB_Hide;

function GLB_SetLightBox()
{
// initialisation de quelques trucs...
}
oLightBox.prototype.SetLightBox = GLB_SetLightBox;

// Retrouve la description d'une liste en fonction de son ID
function GLB_FindList(idlb)
{
	if (idlb == 0)
		return this.tListDesc[0];
	else
	{
		for (var l = 0; l < this.tListDesc.length ; l++)
		{
			if (this.tListDesc[l][0] == idlb)
			{
				return(this.tListDesc[l]);
				break;
			}
		}
	}
	return null;
}
oLightBox.prototype.FindList = GLB_FindList;

function GLB_LoadLightBoxList(selID)
{
   var selNum = 0;
   if (!bUserLoggedIn) {

        var htmlObj = getObj('lightbox');
        if (htmlObj)
        {
            var loginForm = window.oAjax.Ajax('LoadLoginForm');
            htmlObj.innerHTML = '<div style="padding: 15px;">' + loginForm + '</div>';
        }
		this.activeLB = 0;
		this.ResetList0();

        return;
    }
    
    if (typeof(window.tAjaxInitLoad[this.lbType]) == 'object')
    {
        this.tListDesc = window.tAjaxInitLoad[this.lbType];
//        window.tAjaxInitLoad[this.lbType] = '';
    }
    else
    {
    	var result = window.oAjax.Ajax('LoadLightBoxList?lbType=' + this.lbType);							// lecture du nom des lightbox ou des story liste !!!
    	this.tListDesc = eval(result);
    }

	var html = '', idlb, desc;
	if (this.tListDesc.length > 0)													// creation du code HTML du selecteur de lightbox
	{
		html = '<select name="lightbox_choice" id="lightbox_choice" onchange="window.oLightBox.DisplayListDesc(this.value);">';

		if ((selID == null) || (selID == 0))						  // si on a pas fournit de lightbox a charger, on regarde dans le cooki
		{
            selID = parseInt(getCookie('lb_id_' + this.lbType), 10);
            if ((isNaN(selID)) || (selID == null)) // ES : 27/02/2007
                selID = 0;
		}

		if (selID != null)								  // on recherche quelle va etre la lightbox selectionnee en fonction de defsel
		{
			for (var v = 0 ; v < this.tListDesc.length ; v++)
			{
				idlb = this.tListDesc[v][0];
				if (selID == idlb)
				{
					selNum = v;
					break;
				}
			}
		}
		else
            selNum = 0;

		for (var v = 0 ; v < this.tListDesc.length ; v++)
		{
			idlb = this.tListDesc[v][0];
			desc = this.tListDesc[v][1];

			if ((typeof(this.tChangeLB[idlb]) != 'undefined') && (this.tChangeLB[idlb] == true))
				desc = '* ' + desc;
			if (selNum == v)
				html += '<option value=' + idlb + ' id=sel_' + idlb + ' selected>' + desc + '</option>';
			else
				html += '<option value=' + idlb + ' id=sel_' + idlb + '>' + desc + '</option>';
		}
		html += '</select>';
	}
	else
	{
		this.activeLB = 0;
		this.ResetList0();
	}

	var htmlObj = getObj('lightbox_select');
	if (htmlObj)
		htmlObj.innerHTML = html;

	if (this.tListDesc.length > 0)
	{
	   if ((selID == null) || (selID == 0) || (typeof(this.tListDesc[selNum]) == 'undefined') || (this.tListDesc[selNum][0] != selID))
	       return (this.tListDesc[0][0]);
	   else
	       return selID;
	}
	else
		return 0;
}
oLightBox.prototype.LoadLightBoxList = GLB_LoadLightBoxList;

function GLB_LoadLightbox(idlb)
{
	if (typeof(this.tActiveLB[idlb]) == 'undefined')
	{
    	if (typeof(window.tAjaxLBList[idlb]) == 'object')
    	{
    	   	var tRes = window.tAjaxLBList[idlb];
    	   	window.tAjaxLBList[idlb] = null;
    	}
    	else
    	{
    		var result = window.oAjax.Ajax('LoadLightBox?Idlb=' + idlb);
    	   	var tRes = eval(result);
    	}
		this.UpToTimeLB(idlb);
		var v, c;
		this.tActiveLB[idlb] = [];
		this.tActiveLB[idlb][0] = [];
		this.tActiveLB[idlb][1] = [];
// Canal 1
		for (v = 0 ; v < tRes[1].length ;  v++)
			this.tActiveLB[idlb][0][v] = new oVignette(tRes[1][v]);
// Canal 2
        if (this.lbType == 2)
    		for (v = 0 ; v < tRes[2].length ;  v++)
	       		this.tActiveLB[idlb][1][v] = new oVignette(tRes[2][v]);
	}
	this.posout = 0;
}
oLightBox.prototype.LoadLightbox = GLB_LoadLightbox;

// (DE) 15/12/2006 traitement et realisation d'une story
function GLB_ProcessStory()
{
  var result = window.oAjax.Ajax('ProcessStory?selection_id='+ this.activeLB);
}
oLightBox.prototype.ProcessStory = GLB_ProcessStory;

function GLB_DisplayListDesc(idlb)
{
	var oLB = this.FindList(idlb);
//	var oLB = this.FindList(idlb);
	
//	alert(oLB + '--' + this.lbType);
	
	if ((oLB) && (oLB[3] == this.lbType))
	{
		this.activeLB = idlb;
		setDynCookie('lb_id_' + this.lbType, idlb);
		if (oLB[4] == 0)
			window.tAjaxLBList[idlb] = [0, [], []];

		this.LoadLightbox(idlb);
		var lbname = oLB[1];
		var lbdate = oLB[2];
	}
	else
	{
		this.activeLB = 0;
		setDynCookie('lb_id_' + this.lbType, idlb);
		lbname = '';
		lbdate = '';
	}

	var nbPhoto = 0;
	var nbVideo = 0;
	var v;

//	debug(this.tActiveLB[this.activeLB]);

	for (v = 0 ; v < this.tActiveLB[this.activeLB][0].length ; v++)
	{
		if (this.tActiveLB[this.activeLB][0][v].type == 'P') nbPhoto++;
		if (this.tActiveLB[this.activeLB][0][v].type == 'V') nbVideo++;
	}

	var html, subhtml, ihtml;
	html = lbdate + '<br/><br/>';
	ihtml = ((nbVideo > 1)?2:0) + ((nbPhoto > 1)?1:0);
//	subhtml = window.tListDescDefaultInfo[ihtml];
	subhtml = tLightboxDefaultInfo[ihtml];
	subhtml = subhtml.replace(/@@1/g, nbPhoto);
	subhtml = subhtml.replace(/@@2/g, nbVideo);

	getObj('lightbox_info').innerHTML = html + subhtml;

	this.Display();
}
oLightBox.prototype.DisplayListDesc = GLB_DisplayListDesc;

function GLB_ComputeKey()
{
	return hex_md5(this.SerializeCurrentListDesc());
}
oLightBox.prototype.ComputeKey = GLB_ComputeKey;

function GLB_SerializeCurrentListDesc()
{
	var v, oVign, canal;
	var ser = "<lightbox>\n";
	for (canal = 0 ; canal < 2 ; canal++)
	{
		ser += "<canal id='" + canal + "'>\n";
		if (this.tActiveLB[this.activeLB][canal] != null)
		{
			for (v = 0 ; v < this.tActiveLB[this.activeLB][canal].length ; v++)
			{ 
				oVign = this.tActiveLB[this.activeLB][canal][v];
				ser += "<vignette id='" + XMLencode(oVign.idvign) + "'>\n";
				if (oLightBox.lbType != 1)	{	
					ser += "<url>" + XMLencode(oVign.url) + "</url>\n";
					ser += "<nom>" + XMLencode(oVign.name) + "</nom>\n";
					ser += "<note>" + XMLencode(oVign.note) + "</note>\n";
					ser += "<auteur>" + XMLencode(oVign.auteur) + "</auteur>\n";
					ser += "<type>" + XMLencode(oVign.type) + "</type>\n";
					ser += "<start>" + XMLencode(oVign.edstart) + "</start>\n";
					ser += "<duree>" + XMLencode(oVign.edlen) + "</duree>\n";
					ser += "<offset>" + XMLencode(oVign.edoffset) + "</offset>\n";
					ser += "<effect>" + XMLencode(oVign.effect) + "</effect>\n";
				};
				ser += "</vignette>\n";
			}
		}
		ser += "</canal>\n";
	}
	ser += "</lightbox>\n";
	return (ser);
}

oLightBox.prototype.SerializeCurrentListDesc = GLB_SerializeCurrentListDesc;

function GLB_CreateLightBoxForm()
{
    html = "<h2>" + window.rsc_popup_lbcreate_title + "</h2><br/><div>" + window.rsc_popup_lbcreate_question + "<input type='text' name='lbname' id='lbname' class='field' value=''><br/><b id='errmessage'>&nbsp;</b><br/><input type='button' onclick='window.oLightBox.CreateLightBox();' value='" + window.rsc_popup_lbcreate_submit + "'></div>";
    quickWindow(html, 330, 100, false, false);
}
oLightBox.prototype.CreateLightBoxForm = GLB_CreateLightBoxForm;

function GLB_CreateLightBox()
{
	var lbName = trim(getObj('lbname').value);
	if (lbName == '')
		getObj('errmessage').innerHTML = window.rsc_popup_lbcreate_err_noname;
	else
	{
		var result = window.oAjax.Ajax('CreateLightBox?lbname=' + lbName + '&lbtype='+window.oLightBox.lbType);
		if (result == -1)
			getObj('errmessage').innerHTML = window.rsc_popup_lbcreate_err_nameexists;
		else
		{
	   	   	var tRes = eval(result);
			var newid = tRes[0];
            Windows.close('window_id');
		    if (typeof(window.tAjaxInitLoad[this.lbType]) == 'object')
			{
				window.tAjaxInitLoad[this.lbType][window.tAjaxInitLoad[this.lbType].length] = tRes;
/*
				var i, j, size;
				size = window.tAjaxInitLoad[this.lbType].length - 1;
				for(i = 0 ; i < size ; i++)
					for(j = 0 ; j < size ; j++)
					{
						var s1 = window.tAjaxInitLoad[this.lbType][j][1];
						var s2 = window.tAjaxInitLoad[this.lbType][j + 1][1];
						if (s1 > s2)
						{
							var o = window.tAjaxInitLoad[this.lbType][j];
							window.tAjaxInitLoad[this.lbType][j] = window.tAjaxInitLoad[this.lbType][j + 1];
							window.tAjaxInitLoad[this.lbType][j + 1] = o;
						}
					}
*/
			}

			this.LoadLightBoxList(newid);
			this.DisplayListDesc(newid);
		}
	}
}
oLightBox.prototype.CreateLightBox = GLB_CreateLightBox;

function GLB_ClearCurrentListDescForm()
{
	var oLB = this.FindList(this.activeLB);
	if ((oLB) && (oLB[3] == this.lbType))
		var desc = oLB[1];
	else
		var desc = '---';

    html = "<h2>" + window.rsc_popup_lbclear_title + "</h2><br/><div>" + window.rsc_popup_lbclear_question + "<b>" + desc + "</b> ?<br/><input type='button' onclick='window.oLightBox.ClearCurrentListDesc();' value='" + window.rsc_popup_lbclear_submit + "'></div>";
    quickWindow(html, 330, 100, false, false);
}
oLightBox.prototype.ClearCurrentListDescForm = GLB_ClearCurrentListDescForm;

function GLB_ClearCurrentListDesc()
{
	this.tActiveLB[this.activeLB] = [];
	this.tActiveLB[this.activeLB][0] = [];
	this.tActiveLB[this.activeLB][1] = [];
	var oLB = this.FindList(this.activeLB);
	if ((oLB) && (oLB[3] == this.lbType))
	{
        Windows.close('window_id');
   		window.oLightBox.SaveCurrentListDesc();
		this.DisplayListDesc(this.activeLB);
	}
	else
		this.Display();
}
oLightBox.prototype.ClearCurrentListDesc = GLB_ClearCurrentListDesc;

function GLB_SaveCurrentListDesc()
{
//    document.body.style.cursor = 'wait';

	if (this.activeLB == 0)
		this.SaveCurrentListDescAsForm();
	else
	{
		var data = this.SerializeCurrentListDesc();
		var result = window.oAjax.Ajax('SaveLightBox?idlb=' + this.activeLB, 'data=' + data);
		if (result != 0)
			alert(window.rsc_popup_lbsave_err_write);
		else
		{
    		this.UpToTimeLB(this.activeLB);
			var oLB = this.FindList(this.activeLB);
			getObj('sel_' + this.activeLB).innerHTML = oLB[1];
			getObj('modif_msg').innerHTML = '';
		}
	}
}
oLightBox.prototype.SaveCurrentListDesc = GLB_SaveCurrentListDesc;

function GLB_SaveCurrentListDescAsForm()
{
	if (bModeLightBoxEditorial & window.oLightBox.lbType==1)
	{
	   staff_select = window.oAjax.Ajax('GetEditorialTypes');
       html = "<h3>" + window.rsc_popup_lbsaveas_title + "</h3><div>" + window.rsc_popup_lbsaveas_question + "<input type='text' name='lbname' id='lbname' class='field' value=''><br />" + window.rsc_popup_lbsaveas_lbtype + staff_select + "<br/><b id=''>&nbsp;</b><br/><input type='button' onclick='window.oLightBox.SaveCurrentListDescAs();' value='" + window.rsc_popup_lbsaveas_submit + "'></div>";
    }
	else 
	{
	   html = "<h3>" + window.rsc_popup_lbsaveas_title + "</h3><div><input type='hidden' name='lbtype' id='lbtype' value=" + window.oLightBox.lbType + "></b>" + window.rsc_popup_lbsaveas_question + "<input type='text' name='lbname' id='lbname' class='field' value=''><br/><b id=''>&nbsp;</b><br/><input type='button' onclick='window.oLightBox.SaveCurrentListDescAs();' value='" + window.rsc_popup_lbsaveas_submit + "'></div>";
	}
    quickWindow(html, 330, 100, false, false);
}
oLightBox.prototype.SaveCurrentListDescAsForm = GLB_SaveCurrentListDescAsForm;

function GLB_SaveCurrentListDescAs()
{
	var lbName = trim(getObj('lbname').value);
	var lbType;
	
	// modification didier
	if (getObj('lbtype') == null)
   	   lbType = 1;
	else
	   lbType = trim(getObj('lbtype').value);

	if (lbName == '')
		getObj('errmessage').innerHTML = window.rsc_popup_lbsaveas_err_noname;
	else
	{
		var data = this.SerializeCurrentListDesc();
		var result = window.oAjax.Ajax('SaveAsLightBox?lbname=' + lbName + '&lbtype=' + lbType, 'data=' + data);
		if (result == -1)
			getObj('errmessage').innerHTML = window.rsc_popup_lbsaveas_err_nameexists;
		else
		{
// on vide la liste 0 au cas ou !
	   	   	var tRes = eval(result);
			newid = tRes[0];
            Windows.close('window_id');
		    if (typeof(window.tAjaxInitLoad[this.lbType]) == 'object')
			{
				window.tAjaxInitLoad[this.lbType][window.tAjaxInitLoad[this.lbType].length] = tRes;
/*
				var i, j, size;
				size = window.tAjaxInitLoad[this.lbType].length - 1;
				for(i = 0 ; i < size ; i++)
					for(j = 0 ; j < size ; j++)
					{
						var s1 = window.tAjaxInitLoad[this.lbType][j][1];
						var s2 = window.tAjaxInitLoad[this.lbType][j + 1][1];
						if (s1 > s2)
						{
							var o = window.tAjaxInitLoad[this.lbType][j];
							window.tAjaxInitLoad[this.lbType][j] = window.tAjaxInitLoad[this.lbType][j + 1];
							window.tAjaxInitLoad[this.lbType][j + 1] = o;
						}
					}
*/
			}
			this.LoadLightBoxList(newid);
			this.DisplayListDesc(newid);
/*
			result = tRes[0];
    		this.UpToTimeLB(result);
			this.ResetList0();
			this.LoadLightBoxList(result);
			this.DisplayListDesc(result);
*/
		}
	}
}
oLightBox.prototype.SaveCurrentListDescAs = GLB_SaveCurrentListDescAs;

function GLB_DeleteCurrentListDescForm()
{
	var oLB = this.FindList(this.activeLB);
	if ((oLB) && (oLB[3] == this.lbType))
		var desc = oLB[1];
	else
		var desc = '---';

    html = "<h2>" + window.rsc_popup_lbdelete_title + "</h2><br/><div>" + window.rsc_popup_lbdelete_question + "<b>" + desc + "</b> ?<br/><input type='button' onclick='window.oLightBox.DeleteCurrentListDesc();' value='" + window.rsc_popup_lbdelete_submit + "'></div>";
    quickWindow(html, 330, 100, false, false);
}
oLightBox.prototype.DeleteCurrentListDescForm = GLB_DeleteCurrentListDescForm;

function GLB_DeleteCurrentListDesc()
{
	var oLB = this.FindList(this.activeLB);
	if ((oLB) && (oLB[3] == this.lbType))
	{
        Windows.close('window_id');
		var result = window.oAjax.Ajax('DeleteLightBox?idlb=' + this.activeLB);
		window.tAjaxInitLoad[this.lbType] = '';
	}
	this.tActiveLB[this.activeLB] = [];
	this.tActiveLB[this.activeLB][0] = [];
	this.tActiveLB[this.activeLB][1] = [];
	if ((oLB) && (oLB[3] == this.lbType))
	{
    	deleteCookie('lb_id_' + this.lbType);
		var first_List = this.LoadLightBoxList();
		this.DisplayListDesc(first_List);
	}
	else
		this.Display();
}
oLightBox.prototype.DeleteCurrentListDesc = GLB_DeleteCurrentListDesc;

function GLB_DisplayTransition(oe)
{
    var i;
    var html = '';

	var id = oe.id;
    var canal = id.substr(4, 1);
    var cci = parseInt(id.substr(6, 32), 10);
    var effect = window.oLightBox.tActiveLB[window.oLightBox.activeLB][canal][cci].effect;

	if (window.oLightBox.tChangeLB[window.oLightBox.activeLB] == false)
    	window.oLightBox.tMd5LB[window.oLightBox.activeLB] = window.oLightBox.ComputeKey();

    var selText = '';
    for (i = 0 ; i < window.tEffect.length ; i++)
    {
        var id = window.tEffect[i][0];
        if (id == effect)
            selText = window.tEffect[i][3];
    }

    for (i = 0 ; i < window.tEffect.length; i++)
    {
        var id = window.tEffect[i][0];
        var img = window.tEffect[i][1];
        var text = window.tEffect[i][3];
        if (id == effect)
            html += "<img src='" + window.rsc_imagepath + img + "' style='border-color:#ff97d5;' onmouseover='this.style.borderColor=\"#bc4d90\";getObj(\"effname\").innerHTML=\"" + text + "\";' onmouseout='this.style.borderColor=\"#ff97d5\";getObj(\"effname\").innerHTML=\"" + selText + "\";' onclick='window.oLightBox.SetTransition(" + canal + "," + cci + ", " + i + ");'>";
        else
            html += "<img src='" + window.rsc_imagepath + img + "' onmouseover='this.style.borderColor=\"#bc4d90\";getObj(\"effname\").innerHTML=\"" + text + "\";' onmouseout='this.style.borderColor=\"#ffffff\";getObj(\"effname\").innerHTML=\"" + selText + "\";' onclick='window.oLightBox.SetTransition(" + canal + "," + cci + ", " + i + ");'>";
    }
    html = "<h2>" + window.rsc_popup_lbeffect_title + "<span id='effname'>" + selText + "</span></h2><div id='div_effect'>" + html + "</div>";
    quickWindow(html, 330, 200, false, false);
}
oLightBox.prototype.DisplayTransition = GLB_DisplayTransition;

function GLB_SetTransition(canal, cci, numimage)
{
    window.oLightBox.tActiveLB[window.oLightBox.activeLB][canal][cci].effect = window.tEffect[numimage][0];
    getCObj('edmt' + canal + '_' + cci).src = window.rsc_imagepath + window.tEffect[numimage][2];
    Windows.close('window_id');
    if ((window.oLightBox.tMd5LB[window.oLightBox.activeLB] != window.oLightBox.ComputeKey()) && (window.oLightBox.tChangeLB[window.oLightBox.activeLB] == false))
    {
        window.oLightBox.tChangeLB[window.oLightBox.activeLB] = true;
		var oLB = window.oLightBox.FindList(window.oLightBox.activeLB);
        getObj('sel_' + window.oLightBox.activeLB).innerHTML = '* ' + oLB[1];
		getObj('modif_msg').innerHTML = window.rsc_lightbox_modified;
    }
}
oLightBox.prototype.SetTransition = GLB_SetTransition;

function GLB_PlaySound(oe)
{
	var id = oe.id;
    var canal = id.substr(4, 1);
    var cci = parseInt(id.substr(6, 32), 10);
    var idvign = window.oLightBox.tActiveLB[window.oLightBox.activeLB][canal][cci].idvign;

    overlay('/playlist/sound_preview/'+idvign);
	var oDoc = document;
	oDoc.onmousedown = waitforstopmouse;
	oDoc.onmousemove = waitforstopmouse;
	oDoc.onmouseup = waitforstopmouse;
}
oLightBox.prototype.PlaySound = GLB_PlaySound;

function waitforstopmouse()
{
	var oDoc = document;
	oDoc.onmousedown = null;
	oDoc.onmousemove = null;
	oDoc.onmouseup = null;
}

/**
 * GLB_Display affiche le story editor
 */
function GLB_Display()
{
    var tWorkEffect = [];
    for (i = 0 ; i < window.tEffect.length; i++)
    {
        var id = window.tEffect[i][0];
        var img = window.tEffect[i][2];
        tWorkEffect[id] = img;
    }

	if ((this.tActiveLB[this.activeLB][0] != null) || (this.tActiveLB[this.activeLB][1] != null))
	{
		var canal, canal1X, canal2X, nbs, id, md5, html;
		html = '';
		canal1X = 10;
		canal2X = 10;
		nbs = 0;

		if (this.lbType == 2)
		{
			canal1X = this.GetCanalSize(0) + 15;
			canal2X = this.GetCanalSize(1) + 15;
			var maxTimeLine = Math.max(canal1X, canal2X, 750);
			html = "<div id='tmbg' style='width:" + (maxTimeLine + 20) + "px;'></div><div id='tmln' style='width:" + maxTimeLine + "px;'></div>";

			while (nbs < (maxTimeLine / 600))
			{
				var nbsX = nbs * 600 + 1;
				html += "<div style='position:absolute; left:" + nbsX + "px; top:2px;' class='graduations'>" + nbs + "m 00s</div>";
				nbs += 1;
			}

			canal1X = 10;
			canal2X = 10;
		}

// Canal 0 : video
// Canal 1 : audio
		for (canal = 0 ; canal < 2 ; canal++)
		{
			var col = 0;
			if (canal == 0)
			{
				var divUpE = 26 + 8 - 20;
				var divUpY = 26 + 9;
				var divMdY = 82 + 9;
				var divDwY = 82 + 9;
				var cY20 = 20;
				var cY26 = 26;
				var cY44 = 50;
				var cY62 = 62;
				var cY82 = 82;
				var cY84 = 84;
				var hcci = canal + '_';
				var divClass = 'up-vign';
				var imgClass = 'mvign';
			}
			if (canal == 1)
			{
				var divUpY = 26 + 90 + 2;
				var divMdY = 64 + 90 + 2;
				var divDwY = 64 + 90 + 2;
				var cY20 = 20;
				var cY26 = 26;
				var cY44 = 44;
				var cY62 = 44;
				var cY82 = 64;
				var cY84 = 66;
				var hcci = canal + '_';
				var divClass = 'up-wave';
				var imgClass = 'audio';
			}
// On prends tous les objets de la lightbox et du canal s�lectionn�.
			for (cci = 0 ; cci < this.tActiveLB[this.activeLB][canal].length ; cci++)
			{
				md5 = this.tActiveLB[this.activeLB][canal][cci].md5;
				var img = this.tActiveLB[this.activeLB][canal][cci].url;
           		var ident = this.tActiveLB[this.activeLB][canal][cci].idvign;
				var iname = this.tActiveLB[this.activeLB][canal][cci].name;
				var inote = this.tActiveLB[this.activeLB][canal][cci].note;
				var iauteur = this.tActiveLB[this.activeLB][canal][cci].auteur;
				var itype = this.tActiveLB[this.activeLB][canal][cci].type;
				var effect = this.tActiveLB[this.activeLB][canal][cci].effect;

				if (this.isActive)
				{
					switch(this.lbType)
					{
					case 0:
						break;
					case 1:
    				    if (itype == 'V')
        					var wimg = window.rsc_imagepath + 'p_video.gif';
    				    if (itype == 'P')
        					var wimg = window.rsc_imagepath + 'p_photo.gif';
    
						if (this.tActiveLB[this.activeLB][canal][cci].fixed)
    						html += "<div class='vign' id='lbox" + (hcci + cci) + "' onmousedown='vign_begindragCnl0(this, event);' style='left:" + canal1X + "px; top:20px;'><img class='vign' id='imgc" + cci + "' src='" + wimg + "' style='background-image:url(" + img + ");'><br/><b><a href='/media/view/" + ident + "'>" + iname + "</a></b><br/><img src='" + window.rsc_localpath + partnerName + "/rating" + inote + ".png'><br/>" + iauteur + "</div>";
    					else
    						html += "<div class='vignmov' id='lbox" + (hcci + cci) + "' onmousedown='vign_begindragCnl0(this, event);' style='left:" + canal1X + "px; top:20px;'><img class='vign' id='imgc" + cci + "' src='" + wimg + "' style='background-image:url(" + img + ");'><br/><b><a href='/media/view/" + ident + "'>" + iname + "</a></b><br/><img src='" + window.rsc_localpath + partnerName + "/rating" + inote + ".png'><br/>" + iauteur + "</div>";
    					canal1X += 120;
						break;
					case 2:
						var istart = this.tActiveLB[this.activeLB][canal][cci].edstart;
						var itime = this.tActiveLB[this.activeLB][canal][cci].edlen;

						var upstart = istart;
						var dwstart = istart;
						var uptime = itime;
						var dwtime = itime;
						var ext = '';
    				    var trsSize = 0;
						var trsStart = 0;
   						if (cci > 0)
						{
//							var iprevend = this.tActiveLB[this.activeLB][canal][cci - 1].edstart + this.tActiveLB[this.activeLB][canal][cci - 1].edlen + 10;
							var iprevend = this.tActiveLB[this.activeLB][canal][cci - 1].edend;
							if (iprevend > istart)
							{
								var delta = iprevend - istart;
								dwstart += delta;
								dwtime -= delta;
							}
						}
	
						if (cci < (this.tActiveLB[this.activeLB][canal].length - 1))
						{
							var inextstart = this.tActiveLB[this.activeLB][canal][cci + 1].edstart;
							if ((istart + itime) > inextstart)
							{
								var delta = (istart + itime) - inextstart;
								trsSize = delta;
								trsStart = inextstart;
								uptime -= delta;
							}
						}
	
						if (!this.tActiveLB[this.activeLB][canal][cci].fixed)
							ext = 'mov';
						else
							ext = col;

						html += "<div class='" + divClass + ext + "' id='lbox" + (hcci + cci) + "' style='left:" + (upstart + 10) + "px; top:" + divUpY + "px; width:" + (uptime - -1) + "px;' onmousedown='edmove_begindragCnl" + canal + "(this, event);'>";
						html += "<img class='" + imgClass + "' src='" + img + "'>";
							html += "<img class='icon' src='" + window.rsc_imagepath + "edstrt.png' style='left:0px; top:0px;' id='edst" + (hcci + cci) + "' onmousedown='edstrt_begindragCnl" + canal + "(this, event);'>\n";
    					if (canal == 1)
							html += "<img class='icon' src='" + window.rsc_imagepath + "edbass.png' style='left:0px; top:18px;' id='edsn" + (hcci + cci) + "' onmousedown='window.oLightBox.PlaySound(this, event);'>\n";
						html += "</div>\n";
						html += "<div class='dw-vign" + ext + "' id='dwbox" + (hcci + cci) + "' style='left:" + (dwstart + 10) + "px; top:" + divDwY + "px; width:" + (dwtime - 0) + "px;'>";
							html += "<img class='icon' src='" + window.rsc_imagepath + "edsize.png' style='left:" + (dwtime - 20) + "px; top:0px;' id='edsz" + (hcci + cci) + "' onmousedown='edsize_begindragCnl" + canal + "(this, event);'>";
						html += "</div>";
    					if (canal == 0)
    					    if (trsSize > 0)
        					    html += "<div class='trns' style='left:" + (trsStart + 10) + "px; top:" + divUpE + "px; width:" + trsSize + "px;' id='edtr" + (hcci + cci) + "' onclick='window.oLightBox.DisplayTransition(this, event);'><img id='edmt" + (hcci + cci) + "' src='" + window.rsc_imagepath + tWorkEffect[effect] + "'></div>";
        					else
        					    html += "<div class='trns' style='left:-100000px; top:" + divUpE + "px; width:20px;' id='edtr" + (hcci + cci) + "' onclick='window.oLightBox.DisplayTransition(this, event);'><img id='edmt" + (hcci + cci) + "' src='" + window.rsc_imagepath + tWorkEffect[effect] + "'></div>";
        			    
						col = 1 - col;
						break;
					}
				}
			}
		}

		if (this.lbType == 2)
		{
    		html += "<div id='mark0' style='position:absolute; left:-100px; top:15px; background-image:url(" + window.rsc_imagepath + "mark0.gif); width:8px; height:100px;'></div>";
    	}

		if (this.htmlObj == null)
			this.htmlObj = getObj('caddie');
		
		if (this.htmlObj)
		{
			resetCObj();
			this.htmlObj.innerHTML = html;
		}
	}
}
oLightBox.prototype.Display = GLB_Display;

/*
 * GLB_FloatInfo affiche le petit rectangle blanc au dessus de l'editeur pour afficher les infos
 * du media en cours de modification.
 * @param {Object} canal : numero du canal (0 = video 1 = audio)
 * @param {Object} cci : position du media
 */
function GLB_FloatInfo(canal, cci)
{
	var fly = getCObj('editinfo');
	if (cci == -1)
	{
		fly.style.left = '-2000px';
		return;
	}

	var oVign = this.tActiveLB[this.activeLB][canal][cci];
	var px = parseInt(getCCSSValue('#caddie', 'left'), 10);
	var py = parseInt(getCCSSValue('#caddie', 'top'), 10);
	var scrL = parseInt(getObj('caddie').scrollLeft, 10);

	var istart = oVign.edstart;
	var itime = oVign.edlen;
	var ioffset = oVign.edoffset;
	if ((istart + 10 - scrL) < 0)
    	fly.style.left = (px + istart) + 'px';
    else
       	fly.style.left = (px + istart + 10 - scrL) + 'px';
	fly.style.top = (py - 121) + 'px';
	
	var dstart = disptime(istart);
	if (cci > 0)
	{
	   var oPrec = this.tActiveLB[this.activeLB][canal][cci - 1];
	   var itrans1 = Math.max(oPrec.edend - oVign.edstart, 0);
       var trans1 = disptime(itrans1);
	}
	else
	{
	   var itrans1 = 0;
       var trans1 = disptime(itrans1);
	}

	if (cci < (this.tActiveLB[this.activeLB][canal].length - 1))
	{
	   var oNext = this.tActiveLB[this.activeLB][canal][cci + 1];
	   var itrans2 = Math.max(oVign.edend - oNext.edstart, 0);
       var trans2 = disptime(itrans2);
    }
	else
	{
	   var itrans2 = 0;
       var trans2 = disptime(itrans2);
	}

    var daffichage = disptime(itime - itrans1 - itrans2);
	var dduree = disptime(itime);
	var dend = disptime(istart + itime);
	var doffset = disptime(ioffset);
	if (oVign.maxlen > 499000)
    	var dmax = window.rsc_float_illimited;
    else
    	var dmax = disptime(oVign.maxlen);

	fly.innerHTML = window.rsc_float_name + '<b>' + oVign.name + '</b><br/>' + window.rsc_float_author + '<b>' + oVign.auteur + '</b><br/>' + window.rsc_float_start + dstart + '<br/>' + window.rsc_float_offset + doffset + '<br/>' + window.rsc_float_effect1 + trans1 + '<br/>' + window.rsc_float_display + daffichage + '<br/>' + window.rsc_float_effect2 + trans2 + '<br/>' + window.rsc_float_end + dend + '<br/>' + window.rsc_float_length + dduree + '<br/>' + window.rsc_float_maxlen + dmax;
}
oLightBox.prototype.FloatInfo = GLB_FloatInfo;

function GLB_GetVignetteInfo(i)
{
	if (this.tActiveLB[this.activeLB][0] != null)
		return this.tActiveLB[this.activeLB][0][i];
	else
		return false
}
oLightBox.prototype.GetVignetteInfo = GLB_GetVignetteInfo;

function GLB_StartUpDown(dir)
{
	this.position = dir;

	var base = new Date();
	this.updownmk = base.getTime();

	if (this.position == 'off')
	{
		var o = getObj('lightbox');
		o.style.top = this.posout + 'px';
		this.position = 'on';
		this.Show();
		window.setTimeout("window.oLightBox.MovingUp()", 10);
	}
	else
	{
		var o = getObj('lightbox');
		o.style.top = this.posout + 'px';
		this.position = 'off';
		window.setTimeout("window.oLightBox.MovingDown()", 10);
	}
	return false;
}
oLightBox.prototype.StartUpDown = GLB_StartUpDown;

function GLB_SetUpDown()
{
	if (this.position == 'off')
	   window.oLightBox.MovingUp();
	else
	   window.oLightBox.MovingDown();
	return false;
}
oLightBox.prototype.SetUpDown = GLB_SetUpDown;

function GLB_MovingUp()
{
	var oDocInfo = getDocInfo();
	if (this.position == 'on')
	{
		var base = new Date();
		var mk = base.getTime();
		var dmk = Math.round((mk - this.updownmk) / 2);
		this.updownmk = mk;

		var hlb = parseInt(getCSSValue('#lightbox', 'height'), 10);
		var o = getObj('lightbox')
		var p = getObj('propertysheet')
		var tmpPos = getAbsoluteOffset(o);
		var oPos = tmpPos[1] - parseInt(o.style.top, 10) + hlb;

//		alert(oDocInfo.clientHeight + '+' + document.body.clientHeight);

		this.posout -= dmk;
		if ((oPos + this.posout) > (oDocInfo.clientHeight + oDocInfo.scrollTop))
		{
			p.style.top = this.posout + 'px';
			o.style.top = this.posout + 'px';
			window.setTimeout("window.oLightBox.MovingUp()", 10);
		}
		else
		{
			if ((tmpPos[1] + hlb) < oDocInfo.clientHeight + oDocInfo.scrollTop)
			{
				this.posout = 0;
				p.style.top = '0px';
				o.style.top = '0px';
			}
			else
			{
				this.posout = oDocInfo.clientHeight + oDocInfo.scrollTop - oPos;
				p.style.top = this.posout + 'px';
				o.style.top = this.posout + 'px';
			}
		}
	}
}
oLightBox.prototype.MovingUp = GLB_MovingUp;

function GLB_MovingDown()
{
	if (this.position == 'off')
	{
		var base = new Date();
		var mk = base.getTime();
		var dmk = Math.round((mk - this.updownmk) / 2);
		this.updownmk = mk;

		var o = getObj('lightbox')
		var p = getObj('propertysheet')
		this.posout += dmk;
		if (this.posout < 0)
		{
			o.style.top = this.posout + 'px';
			p.style.top = this.posout + 'px';
			window.setTimeout("window.oLightBox.MovingDown()", 10);
		}
		else
		{
			this.Hide();
			this.posout = 0;
			o.style.top = this.posout + 'px';
			p.style.top = this.posout + 'px';
		}
	}
}
oLightBox.prototype.MovingDown = GLB_MovingDown;

function GLB_HScroll()
{
	if (this.scrollH != 0)
	{
		getObj('caddie').scrollLeft += this.scrollH;
		window.setTimeout("window.oLightBox.HScroll()", 20);
	}
}
oLightBox.prototype.HScroll = GLB_HScroll;

function GLB_StartTime(id, canal)
{
	this.activeVignID = parseInt(id, 10);
	this.activeVign = this.tActiveLB[this.activeLB][canal][id];
	this.activeMoving = true;
}
oLightBox.prototype.StartTime = GLB_StartTime;

function GLB_StartOrder(id, md5, src, canal)
{
	this.activeVignID = id;

// deplacement d'une vignette de la lightbox
	if (md5 == '')
	{
		this.tActiveLB[this.activeLB][canal][id].fixed = false;
		this.activeVign = this.tActiveLB[this.activeLB][canal][id];
		this.activeVignSrc = 'LB';
//		this.activeVign.edend = this.activeVign.edstart + this.activeVign.edlen;
//		this.activeVign.off = this.activeVign.edstart + this.activeVign.edlen;
//		if (id < (this.tActiveLB[this.activeLB][canal].length - 1))
//			this.activeVign.off = Math.min(this.activeVign.off, this.tActiveLB[this.activeLB][canal][id + 1].edstart - this.activeVign.edstart);			
		window.oLightBox.Display();
	}
// ajout d'une vignette de la vignette bank
	else if ((src == 'VB') && (window.oVignBnk))
	{
		this.activeVign = new cloneObj(window.oVignBnk.tVignette[id]);
		this.activeVignSrc = 'VB';
		this.activeVign.md5 = md5;
	}
// ajout d'une vignette extern
	else if (src == 'US')
	{
		this.activeVign = new cloneObj(this.tUserDrag[id]);
		this.activeVignSrc = 'US';
		this.activeVign.md5 = md5;
	}
	else
	{
		alert('byzarre GLB_StartOrder');
		this.activeVignSrc = '';
	}

	for (var cci = 0; cci < this.tActiveLB[this.activeLB][canal].length; cci++)
	{
		var oVign = this.tActiveLB[this.activeLB][canal][cci];
		oVign.keepstart = oVign.edstart;
	}

	this.activeMoving = true;
}
oLightBox.prototype.StartOrder = GLB_StartOrder;

function GLB_StopOrder(canal, x, y)
{
	var oDocInfo = getDocInfo();
	var i, j;

	switch(this.lbType)
	{
	case 0:
		break;
	case 1:
		break;
	case 2:
		var hlb = parseInt(getCSSValue('#lightbox', 'height'), 10);				// hauteur de l'objet HTML lightbox
		var o = getObj('lightbox')
		var tmpPos = getAbsoluteOffset(o);												// on récupère la position de la lightbox en absolue
		var iX = parseInt(o.style.left, 10);											// x relatif
		var iY = parseInt(o.style.top, 10);												// y relatif
		if (isNaN(iX)) iX = 0;
		if (isNaN(iY)) iY = 0;
		var oPosX = tmpPos[0] - iX;
		var oPosY = tmpPos[1] - iY;
		var oWorkVign;

		var stlbx = oPosX;
		var stlby = Math.min(oPosY, oDocInfo.clientHeight + oDocInfo.scrollTop - hlb + this.origin_caddie_y);
		if ((x > (this.origin_caddie_x + oPosX - 10)) && (x < (this.origin_caddie_x + oPosX + this.origin_caddie_width + 10)) && (y > stlby) && (y < (stlby + this.origin_caddie_height)))
		{
            if (getObj('caddie'))
                var cadScroll = getObj('caddie').scrollLeft;								// on récupère le scroll du caddie
			var aPosX = (x - (this.origin_caddie_x + oPosX + 10) + 10 + cadScroll);	// position X de la souris dans le caddie
			var posx = this.GetIdFromTime(canal, aPosX);
			var tTimeInfo = this.GetNearestTime(canal, aPosX);
			window.status = '-   ' + x + 'x' + aPosX;
			
			var ins, retime;
			tTmp = [];
			ins = false;

// on duplique la vignette
			oWorkVign = new cloneObj(this.activeVign);

			retime = oWorkVign.edlen;
			oWorkVign.edstart = tTimeInfo[1];
			oWorkVign.edend = oWorkVign.edstart + oWorkVign.edlen;

			for (i = 0, j = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
			{		
				if (i == tTimeInfo[0])
				{
					tTmp[j] = oWorkVign;
					tTmp[j].fixed = false;
					j++;
					ins = true;
				}
				tTmp[j] = this.tActiveLB[this.activeLB][canal][i];
				if (ins)
				{
					tTmp[j].edstart += retime;
					tTmp[j].edend += retime;
				}
				j++;
			}
	
			if (ins == false)
			{
				tTmp[j] = oWorkVign;
				tTmp[j].fixed = false;
				j++;
			}
	
			this.tActiveLB[this.activeLB][canal] = tTmp;
			tTmp = [];
			for (i = 0, j = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
			{
				if ((this.tActiveLB[this.activeLB][canal][i].fixed) || (this.tActiveLB[this.activeLB][canal][i].edstart == oWorkVign.edstart))
				{
					tTmp[j] = this.tActiveLB[this.activeLB][canal][i];
					j++;
				}
			}
			this.tActiveLB[this.activeLB][canal] = tTmp;
		}
		else
		{
// c'est ici que ca se passe lorsqu'on veut enlever une vignette de la liste.
			var i, tTmp, upd;
			tTmp = [];
			var modif = false;
			for (i = 0, j = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
			{
				if (this.tActiveLB[this.activeLB][canal][i].fixed)
				{
					tTmp[j] = this.tActiveLB[this.activeLB][canal][i];
					j++;
				}
				else
					modif = true;
			}
			if (modif)
			{
				this.tActiveLB[this.activeLB][canal] = tTmp;
				this.Display();
			}
			this.scrollH = 0;
		}
		break;
	}

	for (i = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
		this.tActiveLB[this.activeLB][canal][i].fixed = true;

	this.activeMoving = false;
	this.activeVign = null;
	this.scrollH = 0;

    if (this.isActive)
    	this.Display();
}
oLightBox.prototype.StopOrder = GLB_StopOrder;

function GLB_GetCanalSize(canal)
{
	if (this.tActiveLB[this.activeLB][canal].length > 0)
		return this.tActiveLB[this.activeLB][canal][this.tActiveLB[this.activeLB][canal].length - 1].edstart + this.tActiveLB[this.activeLB][canal][this.tActiveLB[this.activeLB][canal].length - 1].edlen;
	else
		return 0;
}
oLightBox.prototype.GetCanalSize = GLB_GetCanalSize;

function GLB_GetIdFromTime(canal, atime)
{
	switch(this.lbType)
	{
	case 0:
		break;
	case 1:
		var posx = Math.round(atime / 120);	// posx contient cette position
		var len_caddie = this.tActiveLB[this.activeLB][canal].length;
// si posx est > a la taille du caddie on place la nouvelle icone a la fin.
		if (posx > (len_caddie))
			posx = len_caddie;
// si posx est < 0 on place la nouvelle icone au debut.
		if (posx < 0)
			posx = 0;
		return posx;
		break;
	case 2:
		var aPosX = atime - 10;	// position X de la souris dans le caddie
		var lastVignID = this.tActiveLB[this.activeLB][canal].length;
		var canalSize = this.GetCanalSize(canal);
		if (aPosX <= 0)
			return (0);
		if (aPosX > canalSize)
			return (Math.max(lastVignID -1, 0));
		for (var cci = 0 ; cci < lastVignID ; cci++)
		{
			var istart = this.tActiveLB[this.activeLB][canal][cci].edstart;
			var itime = this.tActiveLB[this.activeLB][canal][cci].edlen;
			if (aPosX < istart)
			{
				if (cci > 0)
					return(cci - 1);
				else
					return 0;
			}
		}
		return (lastVignID);
		break;
	}
}
oLightBox.prototype.GetIdFromTime = GLB_GetIdFromTime;

function GLB_GetNearestTime(canal, atime)
{
	switch(this.lbType)
	{
	case 0:
		break;
	case 1:
		break;
	case 2:
		var cci
		var aPosX = atime - 10;	// position X de la souris dans le caddie
		if (aPosX <= 0)
			return (0);

		var lastVignID = this.tActiveLB[this.activeLB][canal].length;
		var s,d;
		s = 0;
		if (lastVignID == 0)
		  return ([0, 0]);
		for (cci = 0 ; cci < lastVignID - 1 ; cci++)
		{
			d = (this.tActiveLB[this.activeLB][canal][cci].edstart + this.tActiveLB[this.activeLB][canal][cci + 1].edstart) / 2;
			if ((aPosX >= s) && (aPosX < d))
				return ([cci, this.tActiveLB[this.activeLB][canal][cci].edstart]);
			s =d;
		}
		d = (this.tActiveLB[this.activeLB][canal][lastVignID - 1].edstart + this.tActiveLB[this.activeLB][canal][lastVignID - 1].edend) / 2;
		if ((aPosX >= s) && (aPosX < d))
			return ([lastVignID - 1, this.tActiveLB[this.activeLB][canal][lastVignID - 1].edstart]);
		else
			return ([lastVignID, this.tActiveLB[this.activeLB][canal][lastVignID - 1].edend]);
		break;
	}
}
oLightBox.prototype.GetNearestTime = GLB_GetNearestTime;

// Cette fonction permet de reorganiser (mais aussi ajouter ou supprimer) les vignette de la liste
function GLB_ReOrder(canal, x, y)
{
	var oDocInfo = getDocInfo();
	if (!this.isActive)
		return;

	var hlb = parseInt(getCSSValue('#lightbox', 'height'), 10);				// hauteur de l'objet HTML lightbox
	var o = getObj('lightbox')
	var tmpPos = getAbsoluteOffset(o);												// on récupère la position de la lightbox en absolue
	var iX = parseInt(o.style.left, 10);											// x relatif
	var iY = parseInt(o.style.top, 10);												// y relatif
	if (isNaN(iX)) iX = 0;
	if (isNaN(iY)) iY = 0;
	var oPosX = tmpPos[0] - iX;
	var oPosY = tmpPos[1] - iY;

	var stlbx = oPosX;
	var stlby = Math.min(oPosY, oDocInfo.clientHeight + oDocInfo.scrollTop - hlb + this.origin_caddie_y);
	var info = '';
// on regarde si le curseur est dans la zone de la lightbox (si oui on ne controlera pas le player)
	var inLB = false;
	
	if ((x > (this.origin_caddie_x + oPosX - 10)) && (x < (this.origin_caddie_x + oPosX + this.origin_caddie_width + 10)) && (y > stlby) && (y < (stlby + this.origin_caddie_height)))
	{
		inLB = true;
		var i, tTmp, ins, del;

		var cadScroll = getObj('caddie').scrollLeft;								// on récupère le scroll du caddie
		var aPosX = (x - (this.origin_caddie_x + oPosX + 10) + 10 + cadScroll);	// position X de la souris dans le caddie
		var posx = this.GetIdFromTime(canal, aPosX);
		var tTimeInfo = this.GetNearestTime(canal, aPosX);
		window.status = x + 'x' + aPosX;

// vign_pos: quelle est la vignette qui est en mouvement ???
		var vign_pos = 1000000000;
		var sDuree = 0;
		for (i = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
		{
			if (!this.tActiveLB[this.activeLB][canal][i].fixed)
				vign_pos = i;
		}

		need2ins = false;
		
		switch(this.lbType)
		{
		case 0:
		case 1:
// Dans le cas de la lightbox on utilise un gestion a la macOS.
// la vignette est déplacé en temps réel.
			if ((posx != vign_pos) && (posx != (vign_pos + 1)))
			{
// la lightbox va changer... car on a assez bougé la souris pour devoir déplacer la vignette
// on aura donc besoin de réinserer la vignette apres coup !!!
				need2ins = true;
// on commence par supprimer la vignette en mouvement (la rouge)
				tTmp = [];
				for (i = 0, j = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
				{
					if (this.tActiveLB[this.activeLB][canal][i].fixed)
					{
						tTmp[j] = this.tActiveLB[this.activeLB][canal][i];
						j++;
					}
				}
				this.tActiveLB[this.activeLB][canal] = tTmp;
			}
	
			if (need2ins)
			{
				if (vign_pos < posx)
					posx--;
				tTmp = [];
				ins = false;
				for (i = 0, j = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
				{		
					if (i == posx)
					{
						tTmp[j] = new cloneObj(this.activeVign);
						tTmp[j].fixed = false;
						j++;
						ins = true;
					}
					tTmp[j] = this.tActiveLB[this.activeLB][canal][i];
					j++;
				}
	
				if (ins == false)
				{
					tTmp[j] = new cloneObj(this.activeVign);
					tTmp[j].fixed = false
					j++;
				}
	
				this.tActiveLB[this.activeLB][canal] = tTmp;
				this.Display();
			}
			break;
		case 2:
// Dans le cas du story Editor la gestion est moins simple.
// il est impossible de déplacer en temps réel la vignette
// on utilise donc un marqueur (un peu a la façon de powerpoint)
			var mark = getObj('mark0');
			mark.style.left = (tTimeInfo[1] + 6) + 'px';
//			this.Display();
			break;
		}

		if ((x > (this.origin_caddie_x + oPosX - 50)) && (x < (this.origin_caddie_x + oPosX + 50)) && (y > stlby) && (y < (stlby + this.origin_caddie_height)))
		{
			this.scrollH = -5;
			window.setTimeout("window.oLightBox.HScroll()", 20);
		}
		else if ((x > ((this.origin_caddie_x + oPosX + this.origin_caddie_width) - 50)) && (x < ((this.origin_caddie_x + oPosX + this.origin_caddie_width) + 50)) && (y > stlby) && (y < (stlby + this.origin_caddie_height)))
		{
			this.scrollH = 5;
			window.setTimeout("window.oLightBox.HScroll()", 20);
		}
		else
		{
			for (i = 0, j = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
			{
				if (this.tActiveLB[this.activeLB][canal][i].fixed)
					info += ';' + i + 'F ';
				else
					info += ';' + i + 'X ';
			}
			this.scrollH = 0;
		}
	}
	else
	{
		switch(this.lbType)
		{
		case 0:
		case 1:
// c'est ici que ca se passe lorsqu'on veut enlever une vignette de la liste.
			var i, tTmp, upd;
			tTmp = [];
			var modif = false;
			for (i = 0, j = 0 ; i < this.tActiveLB[this.activeLB][canal].length ; i++)
			{
				if (this.tActiveLB[this.activeLB][canal][i].fixed)
				{
					tTmp[j] = this.tActiveLB[this.activeLB][canal][i];
					j++;
				}
				else
					modif = true;
			}
			if (modif)
			{
				this.tActiveLB[this.activeLB][canal] = tTmp;
				this.Display();
			}
			this.scrollH = 0;
		break;
		case 2:
			var mark = getObj('mark0');
			mark.style.left = -100 + 'px';
			break;
		}
	}
	
	return (inLB);
}
oLightBox.prototype.ReOrder = GLB_ReOrder;

// Cette fonction permet de reorganiser (mais aussi ajouter ou supprimer) les vignettes de la liste
function GLB_MoveStory(canal, x, y, delta)
{
	var oDocInfo = getDocInfo();
    var i, j;
	var hlb = parseInt(getCCSSValue('#lightbox', 'height'), 10);				// hauteur de l'objet HTML lightbox
	var o = getObj('lightbox')
	var tmpPos = getAbsoluteOffset(o);												// on récupère la position de la lightbox en absolue
	var iX = parseInt(o.style.left, 10);											// x relatif
	var iY = parseInt(o.style.top, 10);												// y relatif
	if (isNaN(iX)) iX = 0;
	if (isNaN(iY)) iY = 0;
	var oPosX = tmpPos[0] - iX;
	var oPosY = tmpPos[1] - iY;

	var stlbx = oPosX;
	var stlby = Math.min(oPosY, oDocInfo.clientHeight + oDocInfo.scrollTop - hlb + this.origin_caddie_y);
	var useDelta;
	var extOff = 0;
	Ws_RemoveStoryVign = false;

	if ((y > stlby) && (y < (stlby + this.origin_caddie_height)))
	{
// soit on est en train de bouger les vignettes
    	if (this.activeVignID > 0)
    	{
    		var startCCI = this.activeVignID - 1;
    		if (canal == 0)
    		{
                this.tActiveLB[this.activeLB][canal][startCCI].edend = this.tActiveLB[this.activeLB][canal][startCCI].keepend + delta;
                this.tActiveLB[this.activeLB][canal][startCCI].edlen = this.tActiveLB[this.activeLB][canal][startCCI].keeplen + delta;
                if (this.tActiveLB[this.activeLB][canal][startCCI].edlen > this.tActiveLB[this.activeLB][canal][startCCI].maxlen)
                {
                    this.tActiveLB[this.activeLB][canal][startCCI].edlen = this.tActiveLB[this.activeLB][canal][startCCI].maxlen;
                    this.tActiveLB[this.activeLB][canal][startCCI].edend = this.tActiveLB[this.activeLB][canal][startCCI].edstart + this.tActiveLB[this.activeLB][canal][startCCI].edlen;
                }
            }
    	}
    	else
    		var startCCI = this.activeVignID;
    
    	this.FloatInfo(canal, this.activeVignID);
    	useDelta = delta;
    }
    else
    {
// soit on est en train de supprimer une vignette
    	if (this.activeVignID > 0)
    	{
    		var startCCI = this.activeVignID - 1;
    		if (canal == 0)
    		{
                this.tActiveLB[this.activeLB][canal][startCCI].edend = this.tActiveLB[this.activeLB][canal][startCCI].keepend;
                this.tActiveLB[this.activeLB][canal][startCCI].edlen = this.tActiveLB[this.activeLB][canal][startCCI].keeplen;
            }
    	}
    	else
    		var startCCI = this.activeVignID;

    	this.FloatInfo(canal, -1);
    	useDelta = 0;
       	extOff = 1;
    	Ws_RemoveStoryVign = true;
    }

	for (cci = startCCI ; cci < this.tActiveLB[this.activeLB][canal].length ; cci++)
	{
		if (cci >= this.activeVignID)
		{
			this.tActiveLB[this.activeLB][canal][cci].edstart = this.tActiveLB[this.activeLB][canal][cci].keepstart + useDelta;
			this.tActiveLB[this.activeLB][canal][cci].edend = this.tActiveLB[this.activeLB][canal][cci].edstart + this.tActiveLB[this.activeLB][canal][cci].edlen;
		}
    }

	for (cci = startCCI ; cci < this.tActiveLB[this.activeLB][canal].length ; cci++)
	{
		var itime = this.tActiveLB[this.activeLB][canal][cci].edlen;
		var istart = this.tActiveLB[this.activeLB][canal][cci].edstart;
	    var trsSize = 0;
	    var trsStart = 0;
		if (cci < (this.tActiveLB[this.activeLB][canal].length - 1))
		{
   			var inextstart = this.tActiveLB[this.activeLB][canal][cci + 1].edstart;
			trsSize = (istart + itime) - inextstart;
			trsStart = inextstart;
		}

		var upstart = istart;
		var dwstart = istart;
		var uptime = itime;
		var dwtime = itime;

		if (cci > 0)
		{
            if (cci == (this.activeVignID + 1))
                if ((cci - (1 + extOff)) >= 0)
           			var iprevend = this.tActiveLB[this.activeLB][canal][cci - (1 + extOff)].edend;
           		else
           		    var iprevend = 0;
    		else
    			var iprevend = this.tActiveLB[this.activeLB][canal][cci - 1].edend;
			if (iprevend > istart)
			{
				var ndelta = iprevend - istart;
				dwstart += ndelta;
				dwtime -= ndelta;
			}
		}

// on force le retrait de la transition autour de la vignette que l'on supprime
        if ((Ws_RemoveStoryVign) && ((cci == this.activeVignID) || (cci == (this.activeVignID - 1))))
            trsSize = 0;

		if (cci < (this.tActiveLB[this.activeLB][canal].length - (1 + extOff)))
		{
            if ((cci + 1) == this.activeVignID)
    			var inextstart = this.tActiveLB[this.activeLB][canal][cci + (1 + extOff)].edstart;
    		else
    			var inextstart = this.tActiveLB[this.activeLB][canal][cci + 1].edstart;
			if ((istart + itime) > inextstart)
			{
				var ndelta = (istart + itime) - inextstart;
				uptime -= ndelta;
			}
		}


		if ((cci == this.activeVignID) && (Ws_RemoveStoryVign))
		{
			getCObj('lbox' + canal + '_' + cci).style.left = -100000 + 'px';
			getCObj('dwbox' + canal + '_' + cci).style.left = -100000 + 'px';
		}
		else
		{
			getCObj('lbox' + canal + '_' + cci).style.left = (upstart + 10) + 'px';
			getCObj('lbox' + canal + '_' + cci).style.width = (uptime - 0) + 'px';
			getCObj('dwbox' + canal + '_' + cci).style.left = (dwstart + 10) + 'px';
			getCObj('dwbox' + canal + '_' + cci).style.width = (dwtime - 0) + 'px';
			getCObj('edsz' + canal + '_' + cci).style.left = (dwtime - 20) + 'px';
		}

        if (canal == 0)
        {
            if (trsSize > 0)
            {
                getCObj('edtr' + canal + '_' + cci).style.left = (trsStart + 10) + 'px';
                getCObj('edtr' + canal + '_' + cci).style.width = trsSize + 'px';
            }
            else
                getCObj('edtr' + canal + '_' + cci).style.left = -100000 + 'px';
        }

	}
}
oLightBox.prototype.MoveStory = GLB_MoveStory;

function GLB_CheckPlayer(x, y)
{
    if (window.oPlayer)
    {
    	var playerPos = getAbsoluteOffset(getObj('player'));
    	var pX = playerPos[0];
    	var pY = playerPos[1];
    	var pbX, pbY, psX, psY;
    	pbX = pbY = psX = psY = 100;
    
    	pbX = parseInt(getCSSValue('.big_plr', 'width'), 10);
    	pbY = parseInt(getCSSValue('.big_plr', 'height'), 10);
    	psX = parseInt(getCSSValue('.sml_plr', 'width'), 10);
    	psY = parseInt(getCSSValue('.sml_plr', 'height'), 10);
    	if (!window.oPlayer.redSquare)
    	{
    		if ((window.oPlayer.displayMode == 'small') && (x > pX) && (x < (pX + psX)) && (y > pY) && (y < (pY + psY)))
    		{
    			flashDrawRedSquare();
    			window.oPlayer.redSquare = true;
    		}
    		if ((window.oPlayer.displayMode == 'big') && (x > pX) && (x < (pX + pbX)) && (y > pY) && (y < (pY + pbY)))
    		{
    			flashDrawRedSquare();
    			window.oPlayer.redSquare = true;
    		}
    	}
    	else
    	{
    		if ((window.oPlayer.displayMode == 'small') && !((x > pX) && (x < (pX + psX)) && (y > pY) && (y < (pY + psY))))
    		{
    			flashRemoveRedSquare();
    			window.oPlayer.redSquare = false;
    		}
    		if ((window.oPlayer.displayMode == 'big') && !((x > pX) && (x < (pX + pbX)) && (y > pY) && (y < (pY + pbY))))
    		{
    			flashRemoveRedSquare();
    			window.oPlayer.redSquare = false;
    		}
    	}
    }
}
oLightBox.prototype.CheckPlayer = GLB_CheckPlayer;

function GLB_MoveToPlayer(x, y)
{
    if (window.oPlayer) {
    	if (window.oPlayer.redSquare)
    	{
    		flashRemoveRedSquare();
    		window.oPlayer.redSquare = false;
    		if (this.OriginVign == 'VB')
    			flashPlayMedia(window.oVignBnk.tVignette[this.activeVignID].idvign, this.activeVignID);
    		if (this.OriginVign == 'US')
    			flashPlayMedia(this.tUserDrag[this.activeVignID].idvign, this.activeVignID);
    	}
	}
}
oLightBox.prototype.MoveToPlayer = GLB_MoveToPlayer;

function vign_playMedia(oe, e)
{
	var cci = oe.id;
	var id = cci.substr(1,32);
	flashPlayMedia(window.oVignBnk.tVignette[id].idvign, id);
}

///////////////////////////////////////
/// Déplacement du démarrage de l'anim

function edstrt_begindragCnl0(oe, e)
{
	Ws_Canal = 0;
	edstrt_begindrag(oe, e);
	cancelBubble(e, true);
}

function edstrt_begindragCnl1(oe, e)
{
	Ws_Canal = 1;
	if (window.oLightBox.lbType < 2) Ws_Canal = 0;
	edstrt_begindrag(oe, e);
	cancelBubble(e, true);
}

function edstrt_begindrag(oe, e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();

	var cci = oe.id;
	window.oLightBox.StartTime(parseInt(cci.substr(6, 32), 10), Ws_Canal);

	if (window.oLightBox.tChangeLB[window.oLightBox.activeLB] == false)
    	window.oLightBox.tMd5LB[window.oLightBox.activeLB] = window.oLightBox.ComputeKey();
	window.oLightBox.FloatInfo(Ws_Canal, parseInt(cci.substr(6, 32), 10));

	Ws_nKeepStart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart;
	Ws_nKeepOffset = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edoffset;

	if (window.oLightBox.activeVignID > 1)
// la premiere vignette
		Ws_nMinStart = Math.max(
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength,
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 2].edend + WS_MinMediaLength,
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - WS_MaxTrsLength,
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edend - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].maxlen,
			0
			);
	else if (window.oLightBox.activeVignID > 0)
// la deuxieme vignette
		Ws_nMinStart = Math.max(
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength,
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - WS_MaxTrsLength,
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edend - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].maxlen,
			0
			);
	else
// a partir de la troisieme vignette et jusqu'a la fin
		Ws_nMinStart = Math.max(
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edend - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].maxlen,
			0
			);

    switch(Ws_Canal)
    {
    case 0:
        if (window.oLightBox.activeVignID == 0)
            Ws_nMaxStart = 0;
    	else if (window.oLightBox.activeVignID < (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
    		Ws_nMaxStart = Math.min(
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edstart - WS_MinMediaLength,
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edend - WS_MinMediaLength,
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend);
    	else
    		Ws_nMaxStart = Math.min(
    		    window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edend - WS_MinMediaLength,
    		    window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend);
        break;
    case 1:
    	if (window.oLightBox.activeVignID <  (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
    		Ws_nMaxStart= Math.min(
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edstart - WS_MinMediaLength,
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edend - WS_MinMediaLength);
    	else
    		Ws_nMaxStart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edend - WS_MinMediaLength;
        break;
    default:
        Ws_nMaxStart = 1000000;
        break;
    }

	Ws_nCurrentX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	oDoc.onmousedown = edstrt_dodrag;
	oDoc.onmousemove = edstrt_dodrag;
	oDoc.onmouseup = edstrt_enddrag;
	return false;
}

function edstrt_dodrag(e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var nNewX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	var nNewY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);

	Ws_nActualX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	Ws_Delta = Ws_nActualX - Ws_nCurrentX;

	var newstart = Ws_nKeepStart + Ws_Delta;
	var newoffset = Ws_nKeepOffset + Ws_Delta;
	if (newstart < Ws_nMinStart) newstart = Ws_nMinStart;
	if (newstart > Ws_nMaxStart) newstart = Ws_nMaxStart;
	if (newoffset < 0) newoffset = 0
	newstart = Math.round(newstart / 5) * 5;
	newoffset = Math.round(newoffset / 5) * 5;
	var oVign = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID];
	oVign.edstart = newstart;
	oVign.edoffset = newoffset;
	oVign.edlen = oVign.edend - oVign.edstart;

	if (window.oLightBox.activeVignID > 0)
		var startCCI = window.oLightBox.activeVignID - 1;
	else
		var startCCI = window.oLightBox.activeVignID;

	for (cci = startCCI ; (cci < window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length) && (cci < (startCCI + 2)) ; cci++)
	{
		var itime = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].edlen;
		var istart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].edstart;

		var upstart = istart;
		var dwstart = istart;
		var uptime = itime;
		var dwtime = itime;
        var trsSize = 0;
        var trsStart = 0;

		if (cci > 0)
		{
			var iprevend = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci - 1].edend;
			if (iprevend > istart)
			{
				var delta = iprevend - istart;
				dwstart += delta;
				dwtime -= delta;
			}
		}

		if (cci < (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
		{
			var inextstart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci + 1].edstart;
			if ((istart + itime) > inextstart)
			{
				var delta = (istart + itime) - inextstart;
				trsSize = delta;
				trsStart = inextstart;
				uptime -= delta;
			}
		}

		getCObj('lbox' + Ws_Canal + '_' + cci).style.left = (upstart + 10) + 'px';
		getCObj('lbox' + Ws_Canal + '_' + cci).style.width = (uptime - 0) + 'px';
		getCObj('dwbox' + Ws_Canal + '_' + cci).style.left = (dwstart + 10) + 'px';
		getCObj('dwbox' + Ws_Canal + '_' + cci).style.width = (dwtime - 0) + 'px';
		getCObj('edsz' + Ws_Canal + '_' + cci).style.left = (dwtime - 20) + 'px';
        if (Ws_Canal == 0)
        {
            if (trsSize > 0)
            {
                getCObj('edtr' + Ws_Canal + '_' + cci).style.left = (trsStart + 10) + 'px';
                getCObj('edtr' + Ws_Canal + '_' + cci).style.width = trsSize + 'px';
            }
            else
                getCObj('edtr' + Ws_Canal + '_' + cci).style.left = -100000 + 'px';;
        }
	}

	window.oLightBox.FloatInfo(Ws_Canal, window.oLightBox.activeVignID);

	canal1X = window.oLightBox.GetCanalSize(0) + 15;
	canal2X = window.oLightBox.GetCanalSize(1) + 15;
	var maxTimeLine = Math.max(canal1X, canal2X, 750);
	getCObj('tmbg').style.width = (maxTimeLine + 20) + 'px';
	getCObj('tmln').style.width = maxTimeLine + 'px';

	return false;
}

function edstrt_enddrag(e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var nNewX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	var nNewY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);

	window.oLightBox.FloatInfo(Ws_Canal, -1);

//	window.oVignBnk.tVignette[window.oLightBox.activeVignID] += nDistanceX;
//	window.oVignBnk.Display();
//	debug(window.oVignBnk.tVignette[window.oLightBox.activeVignID]);

    if ((window.oLightBox.tMd5LB[window.oLightBox.activeLB] != window.oLightBox.ComputeKey()) && (window.oLightBox.tChangeLB[window.oLightBox.activeLB] == false))
    {
        window.oLightBox.tChangeLB[window.oLightBox.activeLB] = true;
		var oLB = window.oLightBox.FindList(window.oLightBox.activeLB);
        getObj('sel_' + window.oLightBox.activeLB).innerHTML = '* ' + oLB[1];
		getObj('modif_msg').innerHTML = window.rsc_lightbox_modified;
    }

	oDoc.onmousedown = null;
	oDoc.onmousemove = null;
	oDoc.onmouseup = null;
	return false;
}

///////////////////////////////////////
/// Modification de la taille de l'animation

function edsize_begindragCnl0(oe, e)
{
	Ws_Canal = 0;
	edsize_begindrag(oe, e);
	cancelBubble(e, true);
}

function edsize_begindragCnl1(oe, e)
{
	Ws_Canal = 1;
	if (window.oLightBox.lbType < 2) Ws_Canal = 0;
	edsize_begindrag(oe, e);
	cancelBubble(e, true);
}

function edsize_begindrag(oe, e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var cci = oe.id;
	window.oLightBox.StartTime(parseInt(cci.substr(6, 32), 10), Ws_Canal);

	if (window.oLightBox.tChangeLB[window.oLightBox.activeLB] == false)
    	window.oLightBox.tMd5LB[window.oLightBox.activeLB] = window.oLightBox.ComputeKey();
	window.oLightBox.FloatInfo(Ws_Canal, parseInt(cci.substr(6, 32), 10));

	Ws_nKeepEnd = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edend;

	if (window.oLightBox.activeVignID < (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 2))
// n'importe quelle vignette sauf les deux dernières
		Ws_nMaxEnd = Math.min(
// soit c'est WS_MinMediaLength avant la fin de la vignette suivante
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edend - WS_MinMediaLength,
// soit c'est WS_MinMediaLength avant le debut de la suivante
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 2].edstart - WS_MinMediaLength,
// soit c'est WS_MaxTrsLength apres le debut de la vignette suivante
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edstart + WS_MaxTrsLength,
// soit la longeur maximal initial de l'animation (maxlen pour une photo est fixée a 10000 secondes)
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].maxlen
			);
	else if (window.oLightBox.activeVignID < (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
// l'avant dernière vignette
		Ws_nMaxEnd = Math.min(
// soit c'est WS_MinMediaLength avant la fin de la vignette suivante
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edend - WS_MinMediaLength,
// soit c'est WS_MaxTrsLength apres le debut de la vignette suivante
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edstart + WS_MaxTrsLength,
// soit la longeur maximal initial de l'animation (maxlen pour une photo est fixée a 10000 secondes)
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].maxlen
			);
	else
// la derniere vignette
		Ws_nMaxEnd = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].maxlen;

    switch(Ws_Canal)
    {
    case 0:
    	if (window.oLightBox.activeVignID == (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
		{
	    	if (window.oLightBox.activeVignID == 0)
    			Ws_nMinEnd = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + WS_MinMediaLength;
			else
    			Ws_nMinEnd = Math.max(
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend + WS_MinMediaLength,
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + WS_MinMediaLength);
		}
    	else if (window.oLightBox.activeVignID > 0)
    		Ws_nMinEnd = Math.max(
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend + WS_MinMediaLength,
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + WS_MinMediaLength,
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edstart);
    	else
    		Ws_nMinEnd = Math.max(
    		    window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + WS_MinMediaLength,
        		window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edstart);
        break;
    case 1:
    	if (window.oLightBox.activeVignID > 0)
    		Ws_nMinEnd = Math.max(
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend + WS_MinMediaLength,
    			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + WS_MinMediaLength);
    	else
    		Ws_nMinEnd = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart + WS_MinMediaLength;
        break;
    default:
        Ws_nMinEnd = 0;
        break;
    }

	Ws_nCurrentX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	oDoc.onmousedown = edsize_dodrag;
	oDoc.onmousemove = edsize_dodrag;
	oDoc.onmouseup = edsize_enddrag;
	return false;
}

function edsize_dodrag(e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var nNewX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	var nNewY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);

	Ws_nActualX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	Ws_Delta = Ws_nActualX - Ws_nCurrentX;

	var newend = Ws_nKeepEnd + Ws_Delta;
//	window.status = newend + ' --- ' + Ws_nMinEnd + ' --- ' + Ws_nMaxEnd;

	if (newend > Ws_nMaxEnd) newend = Ws_nMaxEnd;
	if (newend < Ws_nMinEnd) newend = Ws_nMinEnd;
	newend = Math.round(newend / 5) * 5;
	var oVign = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID];
	oVign.edend = newend;
	oVign.edlen = oVign.edend - oVign.edstart;
	if ((oVign.edoffset + oVign.edlen) > oVign.maxlen)
		oVign.edoffset = oVign.maxlen - oVign.edlen;
	
	var startCCI = window.oLightBox.activeVignID;

	for (cci = startCCI ; (cci < window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length) && (cci < (startCCI + 2)) ; cci++)
//	for (cci = startCCI ; cci < window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length ; cci++)
	{
		var itime = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].edlen;
		var istart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].edstart;

		var upstart = istart;
		var dwstart = istart;
		var uptime = itime;
		var dwtime = itime;
        var trsSize = 0;
        var trsStart = 0;

		if (cci > 0)
		{
			var iprevend = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci - 1].edend;
			if (iprevend > istart)
			{
				var delta = iprevend - istart;
				dwstart += delta;
				dwtime -= delta;
			}
		}

		if (cci < (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
		{
			var inextstart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci + 1].edstart;
			if ((istart + itime) > inextstart)
			{
				var delta = (istart + itime) - inextstart;
    			trsSize = delta;
    			trsStart = inextstart;
				uptime -= delta;
			}
		}

		getCObj('lbox' + Ws_Canal + '_' + cci).style.left = (upstart + 10) + 'px';;
		getCObj('lbox' + Ws_Canal + '_' + cci).style.width = (uptime - 0) + 'px';;
		getCObj('dwbox' + Ws_Canal + '_' + cci).style.left = (dwstart + 10) + 'px';;
		getCObj('dwbox' + Ws_Canal + '_' + cci).style.width = (dwtime - 0) + 'px';;
		getCObj('edsz' + Ws_Canal + '_' + cci).style.left = (dwtime - 20) + 'px';;
        if (Ws_Canal == 0)
        {
            if (trsSize > 0)
            {
                getCObj('edtr' + Ws_Canal + '_' + cci).style.left = (trsStart + 10) + 'px';;
                getCObj('edtr' + Ws_Canal + '_' + cci).style.width = trsSize + 'px';;
            }
            else
                getCObj('edtr' + Ws_Canal + '_' + cci).style.left = -100000 + 'px';;
        }
	}

	window.oLightBox.FloatInfo(Ws_Canal, window.oLightBox.activeVignID);

	canal1X = window.oLightBox.GetCanalSize(0) + 15;
	canal2X = window.oLightBox.GetCanalSize(1) + 15;
	var maxTimeLine = Math.max(canal1X, canal2X, 750);
	getCObj('tmbg').style.width = (maxTimeLine + 20) + 'px';
	getCObj('tmln').style.width = maxTimeLine + 'px';

	return false;
}

function edsize_enddrag(e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var nNewX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	var nNewY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);

	window.oLightBox.FloatInfo(Ws_Canal, -1);

//	window.oVignBnk.tVignette[window.oLightBox.activeVignID] += nDistanceX;
//	window.oVignBnk.Display();
//	debug(window.oVignBnk.tVignette[window.oLightBox.activeVignID]);

    if ((window.oLightBox.tMd5LB[window.oLightBox.activeLB] != window.oLightBox.ComputeKey()) && (window.oLightBox.tChangeLB[window.oLightBox.activeLB] == false))
    {
        window.oLightBox.tChangeLB[window.oLightBox.activeLB] = true;
		var oLB = window.oLightBox.FindList(window.oLightBox.activeLB);
        getObj('sel_' + window.oLightBox.activeLB).innerHTML = '* ' + oLB[1];
		getObj('modif_msg').innerHTML = window.rsc_lightbox_modified;
    }

	oDoc.onmousedown = null;
	oDoc.onmousemove = null;
	oDoc.onmouseup = null;
	return false;
}

function edmove_begindragCnl0(oe, e)
{
	var oDoc = document;
	if (oDoc.onmousemove != null)
		return;

	Ws_Canal = 0;
	edmove_begindrag(oe, e);
	cancelBubble(e, true);
}

function edmove_begindragCnl1(oe, e)
{
	var oDoc = document;
	if (oDoc.onmousemove != null)
		return;

	Ws_Canal = 1;
	if (window.oLightBox.lbType < 2) Ws_Canal = 0;
	edmove_begindrag(oe, e);
	cancelBubble(e, true);
}

function edmove_begindrag(oe, e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var cci = oe.id;

	window.oLightBox.StartTime(parseInt(cci.substr(6, 32), 10), Ws_Canal);

	if (window.oLightBox.tChangeLB[window.oLightBox.activeLB] == false)
    	window.oLightBox.tMd5LB[window.oLightBox.activeLB] = window.oLightBox.ComputeKey();
	window.oLightBox.FloatInfo(Ws_Canal, parseInt(cci.substr(6, 32), 10));

    Ws_RemoveStoryVign = false;
	Ws_nKeepStart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart;
	window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].fixed = false;

    switch(Ws_Canal)
    {
    case 0:
    	if (window.oLightBox.activeVignID > 1)
    	{
    		if (window.oLightBox.activeVignID <  (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
    			Ws_nMinStart = Math.max(
// soit c'est WS_MinMediaLength apres la debut de la vignette précédente
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength,
// soit c'est WS_MinMediaLength apres la fin de la vignette précédent la vignette précédente.
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 2].edend + WS_MinMediaLength
    				);
    		else
    			Ws_nMinStart = Math.max(
// soit c'est WS_MinMediaLength apres la debut de la vignette précédente
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength,
// soit c'est WS_MinMediaLength apres la fin de la vignette précédent la vignette précédente.
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 2].edend + WS_MinMediaLength
    				);
      		Ws_nMaxStart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].maxlen;
    	}
    	else if (window.oLightBox.activeVignID > 0)
    	{
    		if (window.oLightBox.activeVignID <  (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
    			Ws_nMinStart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength;
    		else
    			Ws_nMinStart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength;

    		Ws_nMaxStart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].maxlen;
    	}
    	else
    	{
    		Ws_nMinStart = 0;
            Ws_nMaxStart = 0;
    	}
        break;
    case 1:
    	if (window.oLightBox.activeVignID > 1)
    	{
    		if (window.oLightBox.activeVignID <  (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
    			Ws_nMinStart = Math.max(
// soit c'est WS_MinMediaLength apres la debut de la vignette précédente
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength,
// soit c'est WS_MinMediaLength apres la fin de la vignette précédent la vignette précédente.
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 2].edend + WS_MinMediaLength,
// soit c'est WS_MinMediaLength avant la fin de la vignette.
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edlen + WS_MinMediaLength,
// soit c'est WS_MaxTrsLength avant la fin de la vignette précédente
        			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - WS_MaxTrsLength,
// soit c'est WS_MinMediaLength avant la fin de la vignette.
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edstart - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart) + WS_MinMediaLength
    				);
    		else
    			Ws_nMinStart = Math.max(
// soit c'est WS_MinMediaLength apres la debut de la vignette précédente
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength,
// soit c'est WS_MinMediaLength apres la fin de la vignette précédent la vignette précédente.
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 2].edend + WS_MinMediaLength,
// soit c'est WS_MaxTrsLength avant la fin de la vignette précédente
        			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - WS_MaxTrsLength,
// soit c'est WS_MinMediaLength avant la fin de la vignette.
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edlen + WS_MinMediaLength
    				);
    	}
    	else if (window.oLightBox.activeVignID > 0)
    	{
    		if (window.oLightBox.activeVignID <  (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length - 1))
    			Ws_nMinStart = Math.max(
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength, 
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edlen + WS_MinMediaLength, 
// soit c'est WS_MaxTrsLength avant la fin de la vignette précédente
        			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - WS_MaxTrsLength,
    				window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID + 1].edstart - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edstart) + WS_MinMediaLength
    				);
    		else
    			Ws_nMinStart = Math.max(
    			    window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edstart + WS_MinMediaLength,
// soit c'est WS_MaxTrsLength avant la fin de la vignette précédente
        			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - WS_MaxTrsLength,
    			    window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID - 1].edend - window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][window.oLightBox.activeVignID].edlen + WS_MinMediaLength
    			    );
    	}
    	else
    		Ws_nMinStart = 0;
    		
    	Ws_nMaxStart = 1000000;
        break;
    }

	for (cci = Math.max(0, window.oLightBox.activeVignID - 1) ; cci < window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length ; cci++)
	{
		window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].keepstart = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].edstart;
		window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].keepend = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].edend;
		window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].keeplen = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][cci].edlen;
	}

	getCObj('lbox' + Ws_Canal + '_' + window.oLightBox.activeVignID).style.backgroundColor = '#ff0000';
	getCObj('dwbox' + Ws_Canal + '_' + window.oLightBox.activeVignID).style.backgroundColor = '#ff0000';

	Ws_nCurrentX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	oDoc.onmousedown = edmove_dodrag;
	oDoc.onmousemove = edmove_dodrag;
	oDoc.onmouseup = edmove_enddrag;
	return false;
}

function edmove_dodrag(e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var nNewX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	var nNewY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);

	Ws_nActualX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	Ws_Delta = Ws_nActualX - Ws_nCurrentX;

	var newstart = Ws_nKeepStart + Ws_Delta;
	if (newstart < Ws_nMinStart) newstart = Ws_nMinStart;
	if ((Ws_Canal==0) && (newstart > Ws_nMaxStart)) newstart = Ws_nMaxStart;
	newstart = Math.round(newstart / 5) * 5;
	Ws_Delta = newstart - Ws_nKeepStart;

	window.oLightBox.MoveStory(Ws_Canal, nNewX, nNewY, Ws_Delta);

	canal1X = window.oLightBox.GetCanalSize(0) + 15;
	canal2X = window.oLightBox.GetCanalSize(1) + 15;
	var maxTimeLine = Math.max(canal1X, canal2X, 750);
	getCObj('tmbg').style.width = (maxTimeLine + 20) + 'px';
	getCObj('tmln').style.width = maxTimeLine + 'px';

	return false;
}

function edmove_enddrag(e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var nNewX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	var nNewY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);

	getCObj('lbox' + Ws_Canal + '_' + window.oLightBox.activeVignID).style.backgroundColor = '';
	getCObj('dwbox' + Ws_Canal + '_' + window.oLightBox.activeVignID).style.backgroundColor = '';

    if (Ws_RemoveStoryVign)
    {
		var i, tTmp, upd, time, delta;
		tTmp = [];
		time = 0;
		delta = 0;
		var modif = false;
		for (i = 0, j = 0 ; i < window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length ; i++)
		{
			if (window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][i].fixed)
			{
				tTmp[j] = window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][i];
				j++;
			}
			else
				modif = true;
		}

		for (i = 0 ; i < tTmp.length ; i++)
		{
            if (tTmp[i].edstart > time)
                delta = tTmp[i].edstart - time;
                
            time = tTmp[i].edend;
            
            if (delta > 0)
            {
                tTmp[i].edstart -= delta;
                tTmp[i].edend = tTmp[i].edstart + tTmp[i].edlen;
                modif = true;
            }
		}

		if (modif)
			window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal] = tTmp;
    }

	window.oLightBox.FloatInfo(Ws_Canal, -1);

	for (i = 0, j = 0 ; i < window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal].length ; i++)
		window.oLightBox.tActiveLB[window.oLightBox.activeLB][Ws_Canal][i].fixed = true;

    if ((window.oLightBox.tMd5LB[window.oLightBox.activeLB] != window.oLightBox.ComputeKey()) && (window.oLightBox.tChangeLB[window.oLightBox.activeLB] == false))
    {
        window.oLightBox.tChangeLB[window.oLightBox.activeLB] = true;
		var oLB = window.oLightBox.FindList(window.oLightBox.activeLB);
        getObj('sel_' + window.oLightBox.activeLB).innerHTML = '* ' + oLB[1];
		getObj('modif_msg').innerHTML = window.rsc_lightbox_modified;
    }
    window.oLightBox.Display();

	oDoc.onmousedown = null;
	oDoc.onmousemove = null;
	oDoc.onmouseup = null;
	return false;
}
/**
 * vign_begindragCnl0 est appel�e lorsque l'on d�bute une action de drag and drop
 * @param {Object} oe
 * @param {Object} e
 */
function vign_begindragCnl0(oe, e)
{
	var oDoc = document;
	if (oDoc.onmousemove != null)
		return;
	Ws_Canal = 0;
	vign_begindrag(oe, e);
}

function vign_begindragCnl1(oe, e)
{
	var oDoc = document;
	if (oDoc.onmousemove != null)
		return;
	Ws_Canal = 1;
	if (window.oLightBox.lbType < 2) Ws_Canal = 0;
	vign_begindrag(oe, e);
}

/**
 * vign_begindrag est appel�e au debut d'une action de drag and drop d'une vignette
 * la variable global Ws_Canal est initialis�e
 * @param {Object} oe
 * @param {Object} e
 */
function vign_begindrag(oe, e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var cci = oe.id;
	var t_vign = cci.substr(0, 4);
// On calcule une cl� qui permettra lors du drop de savoir s'il y a eu une modification
	window.oLightBox.startKey = window.oLightBox.ComputeKey();

// quel est le type de l'objet déplacé
// lbox : la vignette vient de la lightbox on est donc en train de r�organiser ou bien supprimer une vignette
// drag : la vignette est de type user. c'est donc dans le alt de l'image que l'on a l'info
// sinon : la vignette vient probablement de la vignette bank
	if (t_vign == 'lbox')
	{
		window.oLightBox.OriginVign = 'LB';
		window.oLightBox.StartOrder(parseInt(cci.substr(6, 32), 10), '', 'LB', Ws_Canal);
	}
	else if (t_vign == 'drag')
	{
		if (oe.id == 'drag')
		{
			var n = window.oLightBox.tUserDrag.length;
			var td = eval(oe.alt);
			if (td[1] == '')
				td[1] = oe.src;
			window.oLightBox.tUserDrag[n] = new oVignette(td);
			cci = oe.id = 'drag' + n;
		}
		else
		{
			var iddrag = parseInt(cci.substr(4, 32), 10);
			if (typeof(window.oLightBox.tUserDrag[iddrag] == 'undefined'))
			{
				var td = eval(oe.alt);
				if (td[1] == '')
					td[1] = oe.src;
				window.oLightBox.tUserDrag[iddrag] = new oVignette(td);
			}
		}
		window.oLightBox.OriginVign = 'US';
		window.oLightBox.StartOrder(parseInt(cci.substr(4, 32), 10), getUI(), 'US', Ws_Canal);
		window.oLightBox.StartUpDown('off');
	}
	else
	{
		window.oLightBox.OriginVign = 'VB';
		window.oLightBox.StartOrder(parseInt(cci.substr(4, 32), 10), getUI(), 'VB', Ws_Canal);
		window.oLightBox.StartUpDown('off');
	}

	getObj('floatimg').src = window.oLightBox.activeVign.url;
	Ws_nCurrentX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	Ws_nCurrentY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);
	Ws_nStartX = Ws_nCurrentX;
	Ws_nStartY = Ws_nCurrentY;
	oDoc.onmousedown = vign_dodrag;
	oDoc.onmousemove = vign_dodrag;
	oDoc.onmouseup = vign_enddrag;
// Ws_Fly permet de savoir si la vignette est sortie de la light box
	Ws_Fly = false;
	Ws_Left = Ws_nCurrentX - 50;
	Ws_Top = Ws_nCurrentY - 50;

    var base = new Date();
    Ws_startMK = base.getTime();

	return false;
}

function vign_dodrag(e)
{
	if (window.oLightBox.activeMoving)
	{
		var oDoc = document;
		var oDocInfo = getDocInfo();
		var nNewX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
		var nNewY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);

        var disp = true;

		var nDistanceX = (nNewX - Ws_nCurrentX);
		var nDistanceY = (nNewY - Ws_nCurrentY);
		Ws_nCurrentX = nNewX;
		Ws_nCurrentY = nNewY;
		
		var fly = getCObj('float');
		Ws_Left += nDistanceX;
		Ws_Top += nDistanceY;
        var d = (nNewX - Ws_nStartX) * (nNewX - Ws_nStartX) + (nNewY - Ws_nStartY) * (nNewY - Ws_nStartY);
//        if ((window.oLightBox.OriginVign == 'US') && (d < 400))
        if (d < 100)
        {
            if (Ws_Fly)
            {
//                window.oLightBox.StartUpDown('on');
               	fly.style.left = '-200px';
                fly.style.top = Ws_Top + 'px';
                Ws_Fly = false;
            }
        }
        else
        {
//            window.oLightBox.StartUpDown('off');
           	fly.style.left = Ws_Left + 'px';
            fly.style.top = Ws_Top + 'px';
            Ws_Fly = true;
        }
/*
		var wNewX = parseInt(fly.style.left) + nDistanceX;
		var wNewY = parseInt(fly.style.top) + nDistanceY;
		fly.style.left = wNewX + 'px';
		fly.style.top = wNewY + 'px';
*/
//        window.oLightBox.SetUpDown();
		var inLB = window.oLightBox.ReOrder(Ws_Canal, Ws_Left, Ws_Top)
		if ((!inLB) && (window.oPlayer))
			window.oLightBox.CheckPlayer(Ws_Left, Ws_Top);
		else if (window.oPlayer)
		{
		  if(window.oPlayer.redSquare)
            {
			flashRemoveRedSquare();
			window.oPlayer.redSquare = false;
			}
		}
		return false;
	}
}

function vign_enddrag(e)
{
	var oDoc = document;
	var oDocInfo = getDocInfo();
	var nNewX = (Ws_bNS) ? e.pageX : (event.clientX + oDocInfo.scrollLeft);
	var nNewY = (Ws_bNS) ? e.pageY : (event.clientY + oDocInfo.scrollTop);

    var idv = window.oLightBox.activeVign.idvign;
    var itype = window.oLightBox.activeVign.type;
	window.oLightBox.MoveToPlayer(nNewX, nNewY)
	window.oLightBox.StopOrder(Ws_Canal, nNewX, nNewY);
	window.oLightBox.activeVignID = null;
	window.oLightBox.StartUpDown('on');

    if (!Ws_Fly)
    {
        var base = new Date();
        var Ws_endMK = base.getTime();

        if ((Ws_endMK - Ws_startMK) < 600){
        
            if (itype == 'V') {
                window.location.href = '/video/view/' + idv;
            } else if (itype == 'P') {
                window.location.href = '/photo/view/' + idv;
            }            
        }
    }
    else
    {
       var fly = getCObj('float');
	   fly.style.left = '-200px';
	   Ws_Fly = false;

        window.status = window.oLightBox.startKey;
    	if ((window.oLightBox.startKey != '') && (window.oLightBox.startKey != window.oLightBox.ComputeKey()) && (window.oLightBox.activeLB != 0) && getObj('sel_' + window.oLightBox.activeLB))
    	{
    		var oLB = window.oLightBox.FindList(window.oLightBox.activeLB);
            if (window.oLightBox.lbType == 1)
			{
// si on est dans une lightbox alors autosave
        		window.oLightBox.SaveCurrentListDesc();
			}
			else
			{
// sinon on place l'étoile indiquant la modification.
	    		getObj('sel_' + window.oLightBox.activeLB).innerHTML = '* ' + oLB[1];
				getObj('modif_msg').innerHTML = window.rsc_lightbox_modified;
			}
    	}
    	if ((window.oLightBox.startKey != '') && (window.oLightBox.startKey != window.oLightBox.ComputeKey()) && (window.oLightBox.activeLB != 0) && getObj('sel_' + window.oLightBox.activeLB))
    		window.oLightBox.DisplayListDesc(window.oLightBox.activeLB);
    	window.oLightBox.startKey = '';
    }

	oDoc.onmousedown = null;
	oDoc.onmousemove = null;
	oDoc.onmouseup = null;

	return false;
}

window.oLightBox = new oLightBox();
