
//
// Définition des constantes
//
var MEDIA_TYPE_SOUNDS = 1;
var MEDIA_TYPE_IMAGES = 2;
var MEDIA_TYPE_MOVIES = 4;
var MEDIA_TYPE_OTHERS = 8;
var MEDIA_TYPE_ALL = 16;
var MEDIA_TYPE_PREV = 32;

var LAST_MEDIA_TYPE = "";

editor_id = false;

//--------------------------------------------------------------------
// show_medialibrary(folder, type)
//--------------------------------------------------------------------
// Affiche la boite de dialogue "Ma médiathèque"
//--------------------------------------------------------------------
// folder : dossier dans lequel ouvrir la boite en premier
// type : association de plusieurs type autorisés à l'insertion 
//			ex: (MEDIA_TYPE_SOUNDS | MEDIA_TYPE_IMAGES)
//			Dans cet ex, seul les sons et les images sont autorisées
//			  MEDIA_TYPE_SOUNDS equ 1
//			  MEDIA_TYPE_IMAGES equ 2
//			  MEDIA_TYPE_MOVIES equ 4
//			  MEDIA_TYPE_OTHERS equ 8
//--------------------------------------------------------------------
// return : rien
//--------------------------------------------------------------------
function show_medialibrary(folder, type, destination, arg1) {
	if (type == MEDIA_TYPE_PREV) {
		type = LAST_MEDIA_TYPE;
	}
	LAST_MEDIA_TYPE = type;
	FileManager_Destination = destination;
	FileManager_Arg1 = arg1;
	editor_id = arg1;
	if (folder) {
		BoiteDialogue('ajax', '/sites/include/pages/filemanager/index.php', 'Ma médiathèque', "autorised_media_type="+type+"&folder="+folder);
	} else {
		BoiteDialogue('ajax', '/sites/include/pages/filemanager/index.php', 'Ma médiathèque', "autorised_media_type="+type);
	}
}

//--------------------------------------------------------------------
// insertAction(site_id, filename)
//--------------------------------------------------------------------
// Fonction appellé quand on insert une photo depuis le filemanager
//--------------------------------------------------------------------
// site_id : id de l'utilisateur
// filename : nom du fichier à rajouter
//--------------------------------------------------------------------
// return : rien
//--------------------------------------------------------------------
function insertAction(site_id, filename) {

	if (FileManager_Destination=="bandeau") {
		add_photo("/_"+site_id+"/_IMAGES_/"+filename,0,0,100,100,1);
		BoiteDialogueClose();
	} else if (FileManager_Destination=="content") {
		//
		// Il fait récupérer la taille de l'image pour mettre les bonnes valeurs aux attributs de tinyMCE
		//
		getImageSize(filename);
	} else if (FileManager_Destination=="advlink") {
		win = FileManager_Arg1[1];
		field_name = FileManager_Arg1[0];

		win.document.getElementById(field_name).value = "/_FILES_/"+filename;
		win.document.getElementById("href_media").value = filename;
		win.document.getElementById('link_type_media').checked="checked";
		BoiteDialogueClose();		
	}  else if (FileManager_Destination=="banniere") {
		Content_ValidBanniere(filename);
		
		/*win.document.getElementById(field_name).value = "/_FILES_/"+filename;
		win.document.getElementById("href_media").value = filename;
		win.document.getElementById('link_type_media').checked="checked";
		BoiteDialogueClose();		*/
	} else {
		alert ("Aucune insertion de type '"+FileManager_Destination+"'. filemanger.js");
	}
}
function setAttrib(elm, attrib, value) {
	var formObj = document.forms[0];
	var valueElm = formObj.elements[attrib];

	if (typeof(value) == "undefined" || value == null) {
		value = "";

		if (valueElm)
			value = valueElm.value;
	}

	if (value != "") {
		elm.setAttribute(attrib, value);

		if (attrib == "style")
			attrib = "style.cssText";

		if (attrib == "longdesc")
			attrib = "longDesc";

		if (attrib == "width") {
			attrib = "style.width";
			value = value + "px";
			value = value.replace(/%px/g, 'px');
		}

		if (attrib == "height") {
			attrib = "style.height";
			value = value + "px";
			value = value.replace(/%px/g, 'px');
		}

		if (attrib == "class")
			attrib = "className";

		eval('elm.' + attrib + "=value;");
	} else {
		if (attrib == 'class')
			elm.className = '';

		elm.removeAttribute(attrib);
	}
}



function makeAttrib(attrib, value) {
	var formObj = document.forms[0];
	var valueElm = formObj.elements[attrib];

	if (typeof(value) == "undefined" || value == null) {
		value = "";

		if (valueElm)
			value = valueElm.value;
	}

	if (value == "")
		return "";

	// XML encode it
	value = value.replace(/&/g, '&amp;');
	value = value.replace(/\"/g, '&quot;');
	value = value.replace(/</g, '&lt;');
	value = value.replace(/>/g, '&gt;');

	return ' ' + attrib + '="' + value + '"';
}



function getImageSize(filename) {
	ajax_GET("/include/pages/filemanager/getImageSize.php","eval",false,false,"filename="+filename,"insertImageTinyMCE('"+filename+"', '"+editor_id+"');");
}

//--------------------------------------------------------------------
// insertImageTinyMCE(url, editor_id)
//--------------------------------------------------------------------
// Fonction appellé quand on insert une photo depuis le filemanager 
// en direction d'un tinyMCE. Insertion dans tinyMCE de la balise
//--------------------------------------------------------------------
// url : Url de l'image
// editor_id : ID de l'éditeur concerné par l'ajout
//--------------------------------------------------------------------
// return : rien
//--------------------------------------------------------------------
function insertImageTinyMCE(url, editor_id) {
/*
	if (editor_id=="news_txt" || editor_id=="ema_txt") {
		
	} else {
		tinyMCE = window.frames['Iframe_Content'].tinyMCE;	
	}
*/
	var inst = tinyMCE.getInstanceById(editor_id);
	var elm = inst.selection.getNode();
	var src = url; //formObj.src.value;
	var onmouseoversrc = false; //formObj.onmouseoversrc.value;
	var onmouseoutsrc = false; //formObj.onmouseoutsrc.value;
	src = "_IMAGES_/" + src;
	
	ALT = prompt("Rentrez ci-dessous une description conscise de ce que représente la photo (indispensable pour les non-voyants).\nEx: Lucky Luck s'éloignant seul vers le soleil couchant.", "");
	
	if (!ALT) {
		ALT = "";
	} else {
		ALT = ALT.replace(/&/g, '&amp;');
		ALT = ALT.replace(/\"/g, '&quot;');
		ALT = ALT.replace(/</g, '&lt;');
		ALT = ALT.replace(/>/g, '&gt;');
	}
	
	if (onmouseoversrc && onmouseoversrc != "")
		onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';";

	if (onmouseoutsrc && onmouseoutsrc != "")
		onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';";

	if (elm != null && elm.nodeName == "IMG") {
		//setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement));
		setAttrib(elm, 'src', src);
		setAttrib(elm, 'mce_src', src);
		setAttrib(elm, 'alt', ALT);
		setAttrib(elm, 'title');
		setAttrib(elm, 'border');
		setAttrib(elm, 'vspace');
		setAttrib(elm, 'hspace');
		setAttrib(elm, 'width', ImgWidth);	//Ces deux valeurs sont retournée par getImageSize
		setAttrib(elm, 'height', ImgHeight);
		setAttrib(elm, 'onmouseover', onmouseoversrc);
		setAttrib(elm, 'onmouseout', onmouseoutsrc);
		setAttrib(elm, 'id');
		setAttrib(elm, 'dir');
		setAttrib(elm, 'lang');
		setAttrib(elm, 'longdesc');
		setAttrib(elm, 'usemap');
		setAttrib(elm, 'style');

		//inst.repaint();
		// Refresh in old MSIE
		if (tinyMCE.isMSIE5)
			elm.outerHTML = elm.outerHTML;
	} else {
		var html = "<img";

		html += makeAttrib('src', src);
		html += makeAttrib('mce_src', src);
		html += makeAttrib('alt', ALT);
		html += makeAttrib('title');
		html += makeAttrib('border');
		html += makeAttrib('vspace');
		html += makeAttrib('hspace');
		html += ' width="'+ImgWidth+'"';	//Ces deux valeurs sont retournée par getImageSize
		html += ' height="'+ImgHeight+'"';	//Ces deux valeurs sont retournée par getImageSize
		html += makeAttrib('onmouseover', onmouseoversrc);
		html += makeAttrib('onmouseout', onmouseoutsrc);
		html += makeAttrib('id');
		html += makeAttrib('dir');
		html += makeAttrib('lang');
		html += makeAttrib('longdesc');
		html += makeAttrib('usemap');
		//html += makeAttrib('style');
		html += " />";
		tinyMCE.execCommand("mceInsertContent", false, html);
	}
	parent.BoiteDialogueClose();
}

//
// Pour faire fonctionner le context menu sur la frame
//
	function mouseMove2(e){
		if (parent.IE) {
			parent.x_Mouse=window.frames['iframe_file'].event.clientX; 
			parent.y_Mouse=window.frames['iframe_file'].event.clientY; 
		} else {
			parent.x_Mouse=e.pageX;
			parent.y_Mouse=e.pageY;	
		}
		parent.y_Mouse+=FrameFileGetY();
		parent.x_Mouse+=FrameFileGetX();
	}
	FrameFileGetY = function () {
		obj = parent.document.getElementById('iframe_file');
		if (!obj) { return 0; }
		Y=0;
		if (obj) {
			while (obj.parentNode) {
				obj = obj.parentNode;
				if (obj.offsetTop) { 
					Y+= (obj.offsetTop);
				}
			}
		}
		if (parent.IE) {
			return Y-parent.document.getElementById('iframe_file').scrollTop;
		} else {
			return Y-parent.document.getElementById('iframe_file').contentDocument.documentElement.scrollTop;
		}
	}
	FrameFileGetX = function () {
		obj = parent.document.getElementById('iframe_file');
		if (!obj) { return 0; }
		X=0;
		if (obj) {
			while (obj.parentNode) {
				obj = obj.parentNode;
				if (obj.offsetLeft) {
					X+= (obj.offsetLeft);
				}
			}
		}
		return X+90;
	}

// Choix de menu quand click droit sur un fichier de la mediatheque
Mediatheque_Context = function(type, filename, dir) {
	contextDestroy();
	if (type=="rename") {
		BoiteDialogue('ajax', '/include/pages/filemanager/file_rename.php', 'Modifier le nom du fichier', 'filename='+filename+'&dir='+dir);
	}
	
	if (type=="del") {
		deleteconfirm = confirm("Etes vous certains de vouloir supprimer ce fichier ?");
		if (deleteconfirm) {
			ajax_GET("/include/pages/filemanager/file_del.php", "eval", false, false, 'filename='+filename+'&dir='+dir, "Mediatheque_AfterDel('"+dir+"')");
		}
	}
	
	if (type=="prop") {
		BoiteDialogue('ajax', '/include/pages/filemanager/file_properties.php', 'Propriétés du fichier', '&dir='+dir+'&filename='+filename);
	}
}

function Mediatheque_AfterDel(url) {
//	BoiteDialogueClose();
	document.getElementById('iframe_file').src = "/include/pages/filemanager/file.php?dir=file/"+url;
}



history_dir = new Array();

history_prev = function() {
	history_dir.pop();
	
	parent.document.getElementById('iframe_file').src = '/include/pages/filemanager/file.php?dir='+history_dir.pop();
	
	if (history_dir.length==0) {
		parent.document.getElementById('prev_off').style.display = 'inline';
		parent.document.getElementById('prev_on').style.display = 'none';
	}
}
history_add = function(dir) {
	history_dir.push(dir);
	if (history_dir.length>1) {
		parent.document.getElementById('prev_off').style.display = 'none';
		parent.document.getElementById('prev_on').style.display = 'inline';
	}
	if (dir=="file" || dir=="../file") {
		parent.document.getElementById('parent_on').style.display = 'none';
		parent.document.getElementById('parent_off').style.display = 'inline';
	} else {
		parent.document.getElementById('parent_on').style.display = 'inline';
		parent.document.getElementById('parent_off').style.display = 'none';
	}
}


//--------------------------------------------------------------------
//ajax_GET(page_php, method, ajax_tmp, div_cible, args, fctnAfter)
//--------------------------------------------------------------------
// Charge le contenu d'une page PHP
//--------------------------------------------------------------------
// page_php : URL de la page à charger
// method :
//		"": Ne fait rien du retour
//		eval: Evalue le retour de la page comme étant du code Javascript à exécuter
//		innerHTML: Insert le retour de la page dans le div dont l'id est contenu dans "div_cible"
//		alert: Fait un alert de tout ce que retourne la page
//		function: Envoi le retour de la page à la fonction contenu dans le champ args
// ajax_tmp : Vestige d'un ancien système. Envoyez false 
// div_cible : L'id du DIV dans lequel doit etre mis le contenu de la page dans le cas de la méthode innerhtml
// args : Les éventuels arguments à envoyer en POST à la page
// fctnAfter : Nom de la fonction a eventuellement appelé une fois le traitement terminé
//--------------------------------------------------------------------
// return : rien
//--------------------------------------------------------------------
function ajax_GET(page_php, method) {
	var div_cible = false;
	var args = false;
	var ajax_tmp = false;
	var fctnAfter = false;
	IMAGE_PATH = "images";
	
	if (arguments.length > 2) {
		ajax_tmp = arguments[2];
	}
	if (arguments.length > 3) {
		div_cible = arguments[3];
	}
	if (arguments.length > 4) {
		args = arguments[4];
	}
	if (arguments.length > 5) {
		fctnAfter = arguments[5];
	}

	//
	// Affiche "Veuillez patienter" dans le div cible
	//
	if (div_cible) {
		if (!document.getElementById(div_cible)) {
			//console.log("AJAX_GET: Impossible de trouver le div_cible '"+div_cible+"' lors de l'appel à la page "+page_php);
		} else {
			document.getElementById(div_cible).innerHTML = "<div id='WaitAjax'><img src='/images/load.gif' style='position:relative; top:4px;' />Veuillez patienter...</div>";
		}
	}
	
	//
	// Affiche un div par dessus le site pour afficher le chargement
	//
	DisplayWait = false;
	if ((method=="eval" || method=="alert") && page_php!="/include/site/content/menu-load.php" && page_php!="/include/pages/filemanager/getImageSize.php" && page_php!="include/delete.php" && !page_php.indexOf("upload_progress")) {
		DisplayWait = true;	
		document.getElementById('BoiteDialogModale').style.display='block';
		document.getElementById('Wait').style.display='block';
	}

	var xhr_object = null;
	xhr_object = new XMLHttpRequest();
	xhr_object.onreadystatechange = function () {
		if(xhr_object.readyState == 4) {
			//
			// Test les codes de retour
			//
			if (xhr_object.status == 403) {
				eval(document.location='index.php');
			} else if (xhr_object.status != 200) {
				alert ("Erreur => "+xhr_object.status + "  | url="+page_php);
			}			
			
			if (method=="eval") {	// Evalue le retour comme étant du javascript
				if (DisplayWait) {
					document.getElementById('Wait').style.display='none';
					document.getElementById('BoiteDialogModale').style.display='none';
				}

				eval(xhr_object.responseText);
				if (fctnAfter) {
					TmpAppelFctn = fctnAfter;
					eval(TmpAppelFctn);	
				}
			} else if (method=="innerHTML") {	// Place ce qui est retourner dans le div_cible
				if (!document.getElementById(div_cible)) {
					//console.log("AJAX_GET (#2): Impossible de trouver le div_cible '"+div_cible+"' lors de l'appel à la page "+page_php);
				}

				// 
				// Evalue tous les scripts trouvés
				//
				if (!document.getElementById(div_cible)) {
					alert('Impossible de trouver le div '+div_cible);
				}
				document.getElementById(div_cible).innerHTML = xhr_object.responseText;		
				scripts = document.getElementById(div_cible).getElementsByTagName("script");
				//alert (page_php+" : "+ scripts.length +" script trouvés");
				for (var iscript=0;iscript<scripts.length;iscript++) {
					//alert (scripts[iscript].innerHTML);
					eval(scripts[iscript].innerHTML);
			    }
				
				if (fctnAfter) {
					TmpAppelFctn = fctnAfter;
					eval(TmpAppelFctn);
				}
				
				//
				// Traite l'affichage des champs SELECT de type EDITABLE pour donner la possiblité à l'utilisateur de modifier tout ça
				//
				ListSelect = document.getElementById(div_cible).getElementsByTagName("select");
				if (document.getElementById('what')) {
					What = document.getElementById('what').value;
				}
				for(i=0; i<ListSelect.length; i++){
					current = ListSelect[i];
					if (current.hasAttribute('class')) {
						if(current.getAttribute('class').indexOf("editable")!=-1){
							//
							// Création de 'l'image
							//
							image = document.createElement("img");
							image.setAttribute('src',"/images/admin_list.png");
							image.setAttribute('style',"position:absolute; margin-top:-3px; cursor:pointer");
							image.setAttribute('title',"Administrer cette liste");
							//
							// Si le name contient un "." c'est qu'il est écrit table.champ
							//
							field_name = current.getAttribute('name');
							image.setAttribute('onclick',"BoiteDialogue('ajax', '/include/pages/admin_lists.php', 'Modifier cette liste', 'table_name="+What+"&field_name="+field_name+"');");
													
							//
							// On l'ajoute juste apres le select
							//							
							current.parentNode.insertBefore(image, current.nextSibling);
						}
					}
				}
				
				//
				// Traite les éléments de class="focus" pour leur donner le focus FIXME: Seulement Firefox3
				//
				if (!IE) {
					ListFocus = document.getElementById(div_cible).getElementsByClassName("focus");
					for(i=0; i<ListFocus.length; i++) {
						ListFocus[i].focus();
					}
				}
			} else if(method=="alert") {	// Fait un alert de ce que la page nous retourne
				if (DisplayWait) {
					document.getElementById('Wait').style.display='none';
					document.getElementById('BoiteDialogModale').style.display='none';
				}
				alert (xhr_object.responseText);
				if (fctnAfter) {
					TmpAppelFctn = fctnAfter;
					eval(TmpAppelFctn);	
				}
			} else if ((method=="") || (method==undefined)) {	//Ne fait rien que d'appeler la fonction after
				if (fctnAfter) {
					TmpAppelFctn = fctnAfter+"(xhr_object.responseText)";
					eval(TmpAppelFctn);	
				}				
				return true;
			} else if (method=="function") {		// Appel la fonction stipulées dans args
				TmpMessageBox = xhr_object.responseText;
				Tmp = args+"(TmpMessageBox)";
				eval (Tmp);				
				return true;
			} else {
				alert ("Appel de getAjax avec param&egrave;tre 'method' inconnu ( "+method+" )");
				return false;
			}
		}
	}
	
	if (!args) {		//Opera exige de passer en GET si on a aucune donnée a POSTER
		xhr_object.open("GET", page_php, true);
	} else {
		xhr_object.open("POST", page_php, true);		
	}
	
	xhr_object.setRequestHeader("Pragma","no-cache");
	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	if (!args) {
		xhr_object.send(null);
	} else {
		xhr_object.send(args);
	}	
	return false;
}


