/**
 * @author ACID-Solutions SARL
 */

function trim(str) {
    return str.replace(/^\s*|\s*$/g,"");
}

function changeVisibility(node_id){
	var my_window = document.getElementById(node_id);
	if (my_window.style.visibility == 'hidden'){
		my_window.style.visibility = 'visible';
	}
	else {
		my_window.style.visibility = 'hidden';
	}
}

function changeDisplay(node_id){
	var my_window = document.getElementById(node_id);
	if (my_window.style.display == 'none'){
		my_window.style.display = '';
	}
	else {
		my_window.style.display = 'none';
	}
}

function writeWindow(div_id) {
	document.write('<span id="'+ div_id +'_window"' + 
	'style="position:absolute;padding:1em;border:solid 1px black;background:#F0F0F0;display:none;">'+
	'<a onclick="javascript:document.getElementById(\''+ div_id +'_window\').style.display=\'none\';return false;" href="#" style="color:white;background:#C84444;padding-left:0.2em;padding-right:0.2em;text-decoration:none;">X</a>' +
	'<hr/>' +
	'<div id="'+ div_id +'"></div>' +
	'</span>');
	var oDraggable = new zDraggable(document.getElementById(div_id+'_window'), zDraggable.DRAG_X | zDraggable.DRAG_Y);
}



function getXmlHttpIn(id_name,my_url) {
	if (document.getElementById(id_name)) {
		//alert('url query : ' + my_url);
		var sId = document.getElementById(id_name);
		var oXmlHttp = zXmlHttp.createRequest();
		oXmlHttp.open("get",my_url,true);
		oXmlHttp.onreadystatechange = function () {
			if (oXmlHttp.readyState == 4) {
				if (oXmlHttp.status == 200) {
					//sId.innerHTML = oXmlHttp.responseText;
					//alert('in:' + id_name + "\n" + oXmlHttp.responseText);
					innerHTMLandJS(sId,oXmlHttp.responseText);
				}
				else {
					alert("Une erreur s'est produite : " + oXmlHttp.statusText);
				} 		
				
			}
		};
		oXmlHttp.send(null);
	}
	else {
		alert('Erreur');
	}
}

function getXmlHttpInSync(id_name,my_url) {
	//alert('will put \n\n'+my_url+'\n\nin\n '+id_name);
	
	var sId = document.getElementById(id_name);
	var oXmlHttp = zXmlHttp.createRequest();
	oXmlHttp.open("get",my_url,false);
	oXmlHttp.send(null);

	if (oXmlHttp.readyState == 4) {
		if (oXmlHttp.status == 200) {
			//sId.innerHTML = oXmlHttp.responseText;
			//alert(oXmlHttp.responseText);
			innerHTMLandJS(sId,oXmlHttp.responseText);
		}
		else {
			alert("Une erreur s'est produite : " + oXmlHttp.statusText);
		} 		
		
	}

}

function postXmlHttp(oForm,async) {
	var sBody = getRequestBody(oForm);
	
	var oXmlHttp = zXmlHttp.createRequest();
	
	if (async == null) async = true;
	
	oXmlHttp.open("post", oForm.action, async);
	oXmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	//oXmlHttp.setRequestHeader("Content-Type","multipart/form-data");
	
	if (async) {
		oXmlHttp.onreadystatechange = function() {
			if (oXmlHttp.readyState == 4) {
				if (oXmlHttp.status != 200) {
					//var response = oXmlHttp.responseText;
					//alert(response);
					//return response;
					//;
				//}else{
					alert("Une erreur s'est produite : " + oXmlHttp.statusText);
				}
			}
		};
		oXmlHttp.send(sBody);		
		return oXmlHttp;
	}
	else {
		oXmlHttp.send(sBody);
		if (oXmlHttp.readyState == 4) {
			if (oXmlHttp.status != 200) {
				alert("Une erreur s'est produite : " + oXmlHttp.statusText);
				return true;
			}
		}
		return false;
	}
}




function getRequestBody(oForm) {
	var aParams = new Array();
	
	for (var i=0 ; i < oForm.elements.length; i++) {
		var sParam = encodeURIComponent(oForm.elements[i].name);
		sParam += "=";
		sParam += encodeURIComponent(oForm.elements[i].value);
		aParams.push(sParam);
	}
	return aParams.join('&');
}
function getFileContent(url) {
	
	
	
			
}

function innerHTMLandJS(divContent, HTML) {
	divContent.innerHTML=HTML; 
	var All=divContent.getElementsByTagName("*");
	for (var i=0; i<All.length; i++) {
		All[i].id=All[i].getAttribute("id")
		All[i].name=All[i].getAttribute("name")
		All[i].className=All[i].getAttribute("class")
	}
	var AllScripts=divContent.getElementsByTagName("script")
	var oXmlHttp = new Array();
	for (var i=0; i<AllScripts.length; i++) {
		var s=AllScripts[i];
		if (s.src && s.src!="") {
			/*
			oXmlHttp[i] = zXmlHttp.createRequest();
			oXmlHttp[i].open("get",s.src,true);
			alert('oXmlHttpd['+i+'] opened');
			oXmlHttp[i].onreadystatechange = function() {
				if (oXmlHttp[i].readyState == 4) {
					if (oXmlHttp[i].status == 200) {
						//eval(oXmlHttp[i].responseText);
						alert(oXmlHttp[i].responseText);
					}else alert('Une erreur est survenue : ' + oXmlHttp[i].statusText)
				}
			}
			oXmlHttp[i].send(null);
			*/
			oXmlHttp = zXmlHttp.createRequest();
			//alert('oXmlHttpd will be opened for ' + s.src);
			oXmlHttp.open("get",s.src,false);
			//alert('oXmlHttpd opened for ' + s.src);
			oXmlHttp.send(null);
			//oXmlHttp.onreadystatechange = function() {
				if (oXmlHttp.readyState == 4) {
					if (oXmlHttp.status == 200) {
						//alert(oXmlHttp.responseText);
						//eval(oXmlHttp.responseText);
					}else alert('Une erreur est survenue : ' + oXmlHttp.statusText)
				}
			//}
			
		}
		else {
			eval(s.innerHTML);
		}
	}
}


function getoXmlHttp(my_url,split_with,async) {
	if (async != true && async != false) async = true; 
	var oXmlHttp = zXmlHttp.createRequest();
	oXmlHttp.open("get",my_url,async);
	oXmlHttp.send(null);
	return oXmlHttp;
}

function setFormVars(id_form,sets) {
	var oForm = document.getElementById(id_form);
	if (oForm) {
		var inputs = oForm.getElementsByTagName('input');
		for (var i=0;i<inputs.length;i++) {
			for (var j=0;j<sets.length;j++) {
				if (inputs[i].getAttribute('name') == sets[j][0]) 
					inputs[i].setAttribute('value',sets[j][1]);
			}
		}
		var selects = oForm.getElementsByTagName('select');
		for (var i=0;i<selects.length;i++) {
			for (var j=0;j<sets.length;j++) {
				if (selects[i].getAttribute('name') == sets[j][0])
					selects[i].value = sets[j][1];
			}
		}
	}
}


function executeAjaxSearch(form_obj,mymod,mykey,myformtype,id_name) {
	var url = "xmlhttp.php?mod="+mymod+"&do=select&key="+mykey+"&form_type="+myformtype;
	form_elts = form_obj.elements;
	for(var i=0;i<elements.length;i++) {
		url += form_elts[i].name + "=" + form_elts[i].value + "&";
	}
	
	getXmlHttpIn(id_name,url);
}



function magicSearch(div_result_id,debut_url,div_general) {
	// TODO : prévoir temporisation
	var nGeneral = document.getElementById(div_general);
	if (nGeneral.value != '')
		getXmlHttpIn(div_result_id,debut_url+'&string_to_search='+nGeneral.value);
}


function createUploadHiddenForm(form_id,file_id,id_dir,id_result,cur_elt_name) {
	
	var emptyblock = document.getElementById('emptyblock');

	
	my_iframe = document.createElement('iframe');
	var iframe_src = 'xmlhttp.php?action='+escape('xmlhttp.php?mod=fichier&do=uploadfile')+
									'&form_id='+form_id+
									'&input_file_id='+file_id+
									'&id_dir='+escape(id_dir)+
									'&cur_elt_name='+cur_elt_name+
									'&div_result='+id_result+
									'&file_id='+file_id+
									'&print_upload_form=1';
	my_iframe.setAttribute('src',iframe_src);
	
	emptyblock.appendChild(my_iframe);
	
}

function changeUploadedFile(form_id,file_id,id_dir,id_result,cur_elt_name) {
	if (!document.getElementById(file_id)) {
		var div_result = document.getElementById(id_result);
		var new_input = document.createElement('input');
		new_input.setAttribute('type','file');
		new_input.setAttribute('name',cur_elt_name);
		new_input.setAttribute('id',file_id);
		new_input.setAttribute('onchange','createUploadHiddenForm("'+form_id+'","'+file_id+'","'+id_dir+'","'+id_result+'","'+cur_elt_name+'");');
		div_result.appendChild(new_input);
	}
}

function removeUploadHiddenForm() {
	
}


// Fonctions pour les notes

function simulSetNote(val,elt,note_path) {
	var parentDiv = elt.parentNode;
	parentDiv.noteInUse = true;
	
	for (var i=0;i<5;i++) {
		if (i<val)
			parentDiv.childNodes[i].setAttribute('src',note_path + '10.png');
		else
			parentDiv.childNodes[i].setAttribute('src',note_path + '0.png');
	}
}



function userHasAlreadyVote(tbl_ref,id_ref) {
	var oXmlHttp = getoXmlHttp('xmlhttp.php?mod='+tbl_ref+'&do=get_current_note&log_entry=note_log&id_ref='+id_ref,'||',false);
	
	if (oXmlHttp.readyState == 4) {
		if (oXmlHttp.status == 200) {
			//alert("\nuserVote\n"+oXmlHttp.responseText);
			return oXmlHttp.responseText.split('||');
		}
		else {
			alert("Une erreur s'est produite : " + oXmlHttp.statusText);
		} 
	}
	return false;
}


function setNoteCode(tbl_ref,id_ref,val) {
	var oXmlHttp = getoXmlHttp('xmlhttp.php?mod='+tbl_ref+'&do=set_note&log_entry=note_log&id_ref='+id_ref+'&new_val='+val,'||',false);
	
	if (oXmlHttp.readyState == 4) {
		if (oXmlHttp.status == 200) {
			//alert("\nsetNoteCode\n"+oXmlHttp.responseText);
			return oXmlHttp.responseText.split('||');
		}
		else {
			alert("Une erreur s'est produite : " + oXmlHttp.statusText);
		} 
	}
	return false;
}


function setNote(tbl_ref,id_ref,val,elt,note_path) {
	var parentDiv = elt.parentNode;
	parentDiv.noteInUse = true;
	var uservote = userHasAlreadyVote(tbl_ref,id_ref,val,elt);
	var setNewNote = false;
	if(uservote[0] == 'true') {
		if (uservote[1] == val)  {
			alert('Vous avez déjà voté '+val+' !');
		}else {
			if (confirm('Vous avez déjà voté '+uservote[1]+'.\nVous êtes sur le point de changer cette note à '+val+'.')) {
				setNewNote = true;
			}
		}
	}else setNewNote = true;
	
	if (setNewNote) {
		var new_note = setNoteCode(tbl_ref,id_ref,val);
		
		//elt.onmouseout = function (event){displayNote(this,note_path,val)};
		if (new_note[0] == 'true') {
			parentDiv.style.display = 'none';
			displayNoteCode(elt,note_path,new_note[1]);//alert('new_val : '+new_note[1]);
			parentDiv.newNote = new_note[1];
			new Effect.Appear(parentDiv.id,{duration:0.5});
		}
		else 
			alert('Une erreur est survenue : '+new_note[0]);
	}
}

function displayNoteCode(elt,note_path,val) {
	var parentDiv = elt.parentNode;
	if (parentDiv.newNote) val = parentDiv.newNote;
	if (parentDiv.noteInUse == false) {
		for (var i=0;i<5;i++) {
			if (i<val){
				if (i+1<=val)
					var img = '10.png';
				else
					var img = Math.round((val - i)*10) + '.png';
				parentDiv.childNodes[i].setAttribute('src',note_path + img);
			}
			else
				parentDiv.childNodes[i].setAttribute('src',note_path + '0.png');
		}
	}
}

function displayNote(elt,note_path,val) {
	elt.parentNode.noteInUse = false;
	setTimeout(displayNoteCode,100,elt,note_path,val);
}

// Fonction pour les URLs
function url_param_add(url,key,val) {
	var url_new;
	var url_vars = url_param_get_args(url);
	
	if (url_vars[1] != null) {
		url_new = url_vars[0]+'?';
		var nb_params = url_vars[1].length;
		var i=0;
		var new_val_set = false;
		for (i=0;i<nb_params;i++) {
			var param_string = url_vars[1][i];
			var params = Array();
			params = url_vars[1][i].split('=');
			
			if (params[0] == key) {
				param_string = key+'='+val;
				new_val_set = true;
			}
			url_new += param_string;
			if (i != nb_params-1) url_new += '&';
		}
		if (!new_val_set) {
			if (nb_params>0) url_new += '&';
			url_new += key+'='+val;
		}
		//else;// Suppression du & en trop
	}
	else {
		url_new = url_vars[0]+'?'+key+'='+val;
	}
	
	return url_new;
}


function url_param_remove(url,key) {
	var url_new;
	var url_vars = url_param_get_args(url);
	
	if (url_vars[1] != null){
		url_new = url_vars[0]+'?';
		var nb_params = url_vars[1].length;
		var i=0;
		var new_val_set = false;
		for (i=0;i<nb_params;i++) {
			var params = url_vars[1][i].split('=');
			if (params[0] != key) {
				url_new += url_vars[1][i];
				if (i != nb_params-1) url_new += '&';
			}
		}
	}
	else url_new = url;
	
	return url_new;
}

function url_param_get_args(url_origin) {
	var url_ancor = url_origin.split('#');
	var url_no_ancor = url_ancor[0];
	
	var url_vars = url_origin.split('?');
	if (url_vars[1] != null) {
		url_vars[1] = url_vars[1].replace('&amp;','&');
		url_vars[1] = url_vars[1].split('&');
	}
	url_vars[2] = url_ancor[1];
	return url_vars;	// Array(url,Array(arg1,arg2,...,argN),ancor)
}





// Fonctions pour FsBrowser

function fsbNewDir(id_form) {
	var dirName = prompt('Nom du nouveau dossier','Nouveau dossier')
	if (dirName) {
		var my_form = document.getElementById(id_form);
		if (my_form) {
			var inputs = my_form.getElementsByTagName('input');
			var i;
			for (i=0;i<inputs.length;i++) {
				if (inputs[i].getAttribute('name') == 'name')
					inputs[i].setAttribute('value',dirName);
			}
			my_form.submit();
		}else alert('Une erreur s\'est produite !');
	}
}

function getExtension(file_name) {
	
	var elts = file_name.split('.');
	elts.reverse();
	
	if(elts[0] == 'gz' && elts[1] == 'tar')
		return elts[1]+'.'+elts[0];
	else
		return elts[0];
}

function fsbChangeName(id_form,current_name,ftype) {
	if (ftype == 'file'){
		extension = getExtension(current_name);
		
		current_name = current_name.replace(RegExp('\.'+extension+'$'),'');
		question = 'Nouveau nom (.'+extension+') : ';
	}else
		question = 'Nouveau nom : ';
	
	var dirName = prompt(question,current_name)
	if (dirName) {
		var my_form = document.getElementById(id_form);
		if (my_form) {
			if (ftype == 'file') {
				var new_name = dirName+'.'+extension;
				current_name = current_name + '.' + extension;
			}
			else {
				var new_name = dirName;
			} 
			
			var inputs = my_form.getElementsByTagName('input');
			var i;
			
			for (i=0;i<inputs.length;i++) {
				if (inputs[i].getAttribute('name') == 'name')
					inputs[i].setAttribute('value',new_name);
				else if (inputs[i].getAttribute('name') == 'current_name')
					inputs[i].setAttribute('value',current_name);
				else if (inputs[i].getAttribute('name') == 'type')
					inputs[i].setAttribute('value',ftype);
			}
			my_form.submit();
		}else alert('Une erreur s\'est produite !');
	}
}


function fsbDelete(id_form,file_path,ftype) {
	if (ftype == 'file') var question = 'Voulez vous supprimer ce fichier ?';
	else var question = 'Voulez vous supprimer ce dossier ET TOUT SON CONTENU ?';
	if (confirm(question)) {
		var my_form = document.getElementById(id_form);
		if (my_form) {
			var inputs = my_form.getElementsByTagName('input');
			var i;
			for (i=0;i<inputs.length;i++) {
				if (inputs[i].getAttribute('name') == 'path')
					inputs[i].setAttribute('value',file_path);
			}
			my_form.submit();
		}else alert('Une erreur s\'est produite !');
	}
}
