/*js
2004.06.12.0.1.0: Fonctions nécessaire pour les formulaires.
2006.05.22.0.1.1: Ajout fonction FormPost qui remplace form_post.
*/
if (document.all)    {n=0;ie=1;ns6=0;fShow="visible";fHide="hidden";}
if (document.getElementById&&!document.all)    {n=0;ie=0;ns6=1;fShow="visible";fHide="hidden";}
if (document.layers) {n=1;ie=0;ns6=0;fShow="show";fHide="hide";}
opr6=ie&&navigator.userAgent.indexOf("Opera")!=-1
window.onerror=new Function("return true")
/*
var Ver4 = parseInt(navigator.appVersion) >= 4
var Nav4 = ((navigator.appName == "Netscape") && Ver4)
var IE4 = ((navigator.userAgent.indexOf("MSIE") != -1) && Ver4)*/
/*
var timeOn = null;
numMenus = 2;
document.onClick = hideAllMenus;
window.onError = null;
*/

function ClearFields(e, selectedfields) {
	
	for (var i=0; i<selectedfields.length; i++) {
		var obj = document.getElementById(selectedfields[i]);
		if( obj.type == 'list' ) {
			obj.value = 0;
			// Reset list to item 0.
			obj.selectedIndex = 0;
		} else {
			obj.value = '';
		}
	}
	return(true);
								
}
/*js-fct
2005.03.08.0.1.0: Change la valeur du champs de formulaire a pour l'action.
*/
function SetAction(e, vAction) {
		e.form.a.value = vAction;
}

/*js-fct
2004.07.31.0.1.0: Demande de confirmer avant de passer à l'action!
2005.03.08.0.1.1: Remplace l'ancienne fonction form_confirm_submit().
*/
function ConfirmAction(e, vAction, message) {
	var the_form = e.form;
	var agree = false;
	agree = confirm(message);
	if (agree) {
		the_form.a.value = vAction;
		the_form.submit();
	} else {
		
		return false;
	}
}

/*fct 2006.07.28.0.0.1: Change le label d'un bouton
2006.09.11.TODO: Problème ça passe pas dans id, syntax error.
*/
function FieldChangeBtnLabel(e, btn, label, olabel) { 

	/*var b = document.getElementById(btn);
	
	// S'il y a plus d'un caractère et que le label n'a pas déjà été changé.
	if(e.value.length > 0 && b.value != label) {
		b.value = label;
	// Remettre le titre par defaut lorsque la case est vidée.
	} else {
		if (e.value.length == 0 ) {
			b.value = olabel;
		}
	}
	return(true);*/
	
}

function FieldChangeBlockVisibility(e, openblock, closeblock) {
	ob = document.getElementById(openblock);
	cb = document.getElementById(closeblock);
	
	ob.style.display = 'block';
	cb.style.display = 'none';
	
	return(true);
}

function ToggleSec(e, target_div) {
	mdiv = document.getElementById(target_div);

	if( mdiv.style.display != 'block' ) {
		mdiv.style.display = 'block';
		e.className = "sec-title-open";
	} else {
		mdiv.style.display = 'none';
		e.className = "sec-title-close";
	}
	return(true);
}

function setFileName(e, fxx) {//e,fn
	f = document.getElementById(fxx);

	filename = e.value;
	// Get only name part of the filename ( after last / ).
	filename_arr = filename.split("\\");
	filename = filename_arr[filename_arr.length-1];
	// Remove extension. (everyting after last dot in filename)
	filename_arr = filename.split(".");
	filename = '';
	for(a=0; a<filename_arr.length-1; a++) {
		filename = filename + filename_arr[a];
	}
	// Remove or change unwanted chars.
	filename = str_nace(filename); 
	f.value = filename;	

	// Permet de sélectionner seulement un partie.
//	f.setSelectionRange(0,3);

	f.focus();
	f.select();

}

/*fctjs 0.1.0.20040731 form_confirm_submit() */
function form_confirm_submit(e, vAction, message) {
	var the_form = e.form;
	var agree = false;
	agree = confirm(message);
	if (agree) {
		the_form.a.value = vAction;
		the_form.submit();
	} else {
		
		return false;
	}
}

function SetFieldsValue(_this, _field, _value, _action) {
	_this.form.a.value = _action;
	_first.form._field.value = _value;

	return(true);
}

function form_keypress(myfield, e, _action_url) {
	var keycode;
	if (window.event)
		keycode = window.event.keyCode;
	else if (e)
		keycode = e.which;
	else
		return true;
	if (keycode == 13) {
		form_keyaction(e, _action_url);
		/*if (myfield.name == 'searchuser') {
			
		} else {
			//Form_DoThis('');
			return false;
		}*/
	} else
		return true;
}

function form_keyaction(_this, _action_url) {
	var m1 = _this.form;
	m1.action = _action_url;
	m1.a.value = "search";
	m1.submit();
}

/*fct-js
2006.10.24.1.0.1: Replace form_post function.
*/
function SubmitForm(e,action) {
	the_form = e.form;
	the_form.a.value = action;
	the_form.submit();
}

/*fctjs 0.1.0.20040729 form_post() */
function form_post(e,vAction) {
	the_form = e.form;
	the_form.a.value = vAction;
	the_form.submit();
	//setTimeout('the_form.submit()', 500);
}

/*fct-js
2005.05.22.1.0..0: Post the form.
*/
function FormPost(e,vAction) {
	the_form = e.form;
	the_form.a.value = vAction;
	the_form.submit();
}


function form_autopost(vdelay) {
	if(vdelay>0) {
		vdelay = vdelay*1000;
	} else {
		vdelay = 1000;
	}
	setTimeout('document.FormPrincipal.submit()', vdelay);
}


function Form_DoiAction(_iaction) { 
	var ml = document.FormPrincipal;
	ml.iaction.value = _iaction;
	ml.submit();
}
	
function Form_DoThis(vaction) {
	
	var ml = document.FormPrincipal;
	ml.iaction.value = vaction;
	ml.submit();
}

function Form_DoThisFunction(vfonction) {
	
	var ml = document.FormPrincipal;
	ml.fonction.value = vfonction;
	ml.submit();
}
//Fonction pour effacer une inscrisption
function Form_ConfirmThis(vfonction, message) {
	var ml=document.FormPrincipal;
	var agree = false;
	agree = confirm(message);
	if (agree) {
		ml.fonction.value = vfonction;
		ml.submit();
	} else {
		return false;
	}
}

/* Ca vas disparaitre, ancienne fonction utile pour school */
function HelpPopUp(url,help_name) {
	popupWin = window.open(url+"help/?help="+help_name, name, "toolbar=no,menubar=no,resizable=yes,scrollbars,left=100,top=50,width=300,height=400"); 
	windowIsOpen = "true"; 
	popupWin.focus(); 
}
/*js-fct
2005.04.07.0.0.2: Ouvre la boîte d'aide. Le c=1 ca sert a rien, c'est juste parce
quand je le met pas et ca me fait un forbidden ??
*/
function PopHelp(url,help_name,group_name) {
	//popupWin = window.open(url, "help", "toolbar=no,menubar=no,resizable=yes,scrollbars,left=100,top=50,width=300,height=400"); 

	popupWin = window.open(url+"?help="+help_name+"&grp="+group_name+"&c=1", "help", "toolbar=no,menubar=no,resizable=yes,scrollbars,left=100,top=50,width=300,height=400"); 
	windowIsOpen = "true"; 
	popupWin.focus(); 
}


function openWin(url, name) { 
	var n=navigator.appName;
	var browserVersion = navigator.appVersion;
	var ns=(n=="Netscape");
	var ie=(n=="Microsoft Internet Explorer");

	if (isCookieEnabled()) {
	
		if (ns) { //&& browserVersion == '6'
			popupWin = window.open(url, name, "status=yes,toolbar=no,menubar=no,resizable=no,scrollbars,left=100,top=50,width=600,height=500"); 
			windowIsOpen = "true"; 
			popupWin.focus(); 
		}
		else if (ie) { //&& browserVersion == '5'
			popupWin = window.open(url, name, "toolbar=no,menubar=no,resizable=no,scrollbars,left=100,top=50,width=600,height=500"); 
			windowIsOpen = "true"; 
			popupWin.focus(); 
		}
		else {
			popupWin = window.open("browser_error.html", "browser_error", "toolbar=no,menubar=no,resizable=no,scrollbars,left=100,top=50,width=530,height=500"); 
			windowIsOpen = "true"; 
			popupWin.focus(); 
		}
	}
} 



/*
	SELECT ALL
*/
function Toggle(e) {
	if (e.checked) {
		//Highlight(e);
		document.cours.toggleAll.checked = AllChecked();
	} else {
		//Unhighlight(e);
		document.cours.toggleAll.checked = false;
	}
}


/*fct OK*/
function ToggleAll(e, thename) {
	if (e.checked) {
		CheckAll(e, thename);
	} else {
		ClearAll(e, thename);
	}
}

function Check(e) {
	e.checked = true;
	//Highlight(e);
}

function Clear(e) {
	e.checked = false;
	//Unhighlight(e);
}

function CheckAll(e, thename) {
	theform = e.form;
	var len = theform.elements.length;
	for (var i = 0; i < len; i++) {
		var e = theform.elements[i];
		if (e.name == thename + "[]") {
			Check(e);
		}
	}
	theform.toggleAll.checked = true;
}

function ClearAll(e, thename) {
	theform = e.form;
	
	var len = theform.elements.length;
	for (var i = 0; i < len; i++) {
		var e = theform.elements[i];
		if (e.name == thename + "[]") {
			Clear(e);
		}
	}
	theform.toggleAll.checked = false;
}


function isValidDate(dateStr) {
	// Match YYYY<anything>M<anything>D and YYYYMMDD
	var datePattern = /^(\d{4})\D*(\d{1,2})\D*(\d{1,2})$/; // requires 4 digit year
	var matchArray = dateStr.match(datePattern); // is the format ok?
	if (matchArray == null) {
		alert("La date " + dateStr + " n'est pas valide.");
		return false;
	}
	year = matchArray[1]; // parse date array into variables
	month = matchArray[2];
	day = matchArray[3];
	
	if (month < 1 || month > 12) { // check month range
		alert("Le mois doit être entre 1 et 12.");
		return false;
	}
	if (day < 1 || day > 31) {
		alert("Le jour dois être entre 1 et 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Le mois "+month+" n'as pas 31 jours!")
		return false;
	}
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) {
			alert("Le mois de février de l'année " + year + " n'as pas " + day + " jours!");
			return false;
		}
	}
	
	dateValid = year + "-" + month + "-" + day;
	//alert("La date " + year + "-" + month + "-" + day + " est valide.");

	
	return(dateValid);
}



function DateCount(Y, M, D) {
	return (Y*20 + +M)*50 + +D;
}

function ChangeVisibility(element, newstate) { // 1=show, 0=hide
	if(document.layers)	{   //NN4+
		document.layers[element].visibility = newstate ? "show" : "hide";
	} else if(document.getElementById) {	  //gecko(NN6) + IE 5+
		var obj = document.getElementById(element);
		obj.style.display = newstate ? "block" : "none";
	} else if(document.all)	{ // IE 4
		document.all[element].style.visibility = newstate ? "visible" : "hidden";
	}
}

function ToggleVisibility(element) {
	if(document.layers)	{   //NN4+
		vstate = document.layers[element].visibility;
		if( !vstate ) vstate = "show";		
		document.layers[element].visibility = vstate == "show" ? "hide" : "show";
	} else if(document.getElementById) {	  //gecko(NN6) + IE 5+

		var obj = document.getElementById(element);
		vstate = obj.style.display;
		if( !vstate ) vstate = "block";
		obj.style.display = vstate == "block" ? "none" : "block";
		
	} else if(document.all)	{ // IE 4
		vstate = document.all[element].style.visibility;
		if( !vstate ) vstate = "visible";		
		document.all[element].style.visibility = vstate == "visible" ? "hidden" : "visible";
	}
}

/*ftc-js
2005.00.00.0.0.0: From dotclear, boutons de mise en page WIKI.
*/
function dcToolBar(textarea,format,img_path) {
	
	
	this.insImg		= function() {}
	
	if (!document.createElement) {
		return;
	}
	
	if ((typeof(document["selection"]) == "undefined")
	&& (typeof(textarea["setSelectionRange"]) == "undefined")) {
		return;
	}
	
	var toolbar = document.createElement("div");
	toolbar.id = "dctoolbar";
	
	function getFormat() {
		//if (format.value == 'wiki') {
			return 'wiki';
		//} else {
		//	return 'html';
		//}
	}
	
	function addButton(src, title, fn) {
		var i = document.createElement('img');
		i.src = src;
		i.title = title;
		i.onclick = function() { try { fn() } catch (e) { } return false };
		i.tabIndex = 400;
		toolbar.appendChild(i);
		addSpace(2);
	}
	
	function addSpace(w)
	{
		s = document.createElement('span');
		s.style.padding='0 '+w+'px 0 0';
		s.appendChild(document.createTextNode(' '));
		toolbar.appendChild(s);
	}
	
	function encloseSelection(prefix, suffix, fn) {
		textarea.focus();
		var start, end, sel, scrollPos, subst;
		
		if (typeof(document["selection"]) != "undefined") {
			sel = document.selection.createRange().text;
		} else if (typeof(textarea["setSelectionRange"]) != "undefined") {
			start = textarea.selectionStart;
			end = textarea.selectionEnd;
			scrollPos = textarea.scrollTop;
			sel = textarea.value.substring(start, end);
		}
		
		if (sel.match(/ $/)) { // exclude ending space char, if any
			sel = sel.substring(0, sel.length - 1);
			suffix = suffix + " ";
		}
		
		if (typeof(fn) == 'function') {
			var res = (sel) ? fn(sel) : fn('');
		} else {
			var res = (sel) ? sel : '';
		}
		
		subst = prefix + res + suffix;
		
		if (typeof(document["selection"]) != "undefined") {
			var range = document.selection.createRange().text = subst;
			textarea.caretPos -= suffix.length;
		} else if (typeof(textarea["setSelectionRange"]) != "undefined") {
			textarea.value = textarea.value.substring(0, start) + subst +
			textarea.value.substring(end);
			if (sel) {
				textarea.setSelectionRange(start + subst.length, start + subst.length);
			} else {
				textarea.setSelectionRange(start + prefix.length, start + prefix.length);
			}
			textarea.scrollTop = scrollPos;
		}
	}
	
	function draw(msg) {
		p = document.createElement('em');
		p.style.display='block';
		p.style.margin='-0.5em 0 0.5em 0';
		p.appendChild(document.createTextNode(msg));
		textarea.parentNode.insertBefore(p, textarea);
		textarea.parentNode.insertBefore(toolbar, textarea);
	}
	
	
	// ---
	function singleTag(wtag,htag,wetag) {
		if (getFormat() == 'wiki') {
			var stag = wtag;
			var etag = (wetag) ? wetag : wtag;
		} else {
			var stag = '<'+htag+'>';
			var etag = '</'+htag+'>';
		}
		encloseSelection(stag,etag);
	}
	
	function btStrong(label) {
		addButton(img_path+'bt_strong.png',label,
		function() { singleTag('__','strong'); });
	}
	
	function btEm(label) {
		addButton(img_path+'bt_em.png',label,
		function() { singleTag("''",'em'); });
	}
	
	function btIns(label) {
		addButton(img_path+'bt_ins.png',label,
		function() { singleTag('++','ins'); });
	}
	
	function btDel(label) {
		addButton(img_path+'bt_del.png',label,
		function() { singleTag('--','del'); });
	}
	
	function btQ(label) {
		addButton(img_path+'bt_quote.png',label,
		function() { singleTag('{{','q','}}'); });
	}
	
	function btCode(label) {
		addButton(img_path+'bt_code.png',label,
		function() { singleTag('@@','code'); });
	}
	
	function btBr(label) {
		addButton(img_path+'bt_br.png',label,
		function() {
			var tag = getFormat() == 'wiki' ? "%%%\n" : "<br />\n";
			encloseSelection('',tag);
		});
	}
	
	function btBquote(label) {
		addButton(img_path+'bt_bquote.png',label,
		function() {
			encloseSelection("\n",'',
			function(str) {
				if (getFormat() == 'wiki') {
					str = str.replace(/\r/g,'');
					return '> '+str.replace(/\n/g,"\n> ");
				} else {
					return "<blockquote>"+str+"</blockquote>\n";
				}
			});
		});
	}
	
	function btPre(label) {
		addButton(img_path+'bt_pre.png',label,
		function() {
			encloseSelection("\n",'',
			function(str) {
				if (getFormat() == 'wiki') {
					str = str.replace(/\r/g,'');
					return ' '+str.replace(/\n/g,"\n ");
				} else {
					return "<pre>"+str+"</pre>\n";
				}
			});
		});
	}
	
	function btList(label,type) {
		var img = (type == 'ul') ? 'bt_ul.png' : 'bt_ol.png';
		var wtag = (type == 'ul') ? '*' : '#';
		
		addButton(img_path+img,label,
		function() {
			encloseSelection("",'',
			function(str) {
				if (getFormat() == 'wiki') {
					str = str.replace(/\r/g,'');
					return wtag+' '+str.replace(/\n/g,"\n"+wtag+' ');
				} else {
					str = str.replace(/\r/g,'');
					str = str.replace(/\n/g,"</li>\n <li>");
					return "<"+type+">\n <li>"+str+"</li>\n</"+type+">";
				}
			});
		});
	}
	
	function btLink(label,msg_url,msg_lang,default_lang) {
		addButton(img_path+'bt_link.png',label,
		function() {
			var href = window.prompt(msg_url,'');
			if (!href) { return; }
			
			var hreflang = window.prompt(msg_lang,default_lang);
			
			if (getFormat() == 'wiki') {
				stag = '[';
				var etag = '|'+href;
				if (hreflang) { etag = etag+'|'+hreflang; }
				etag = etag+']';
			} else {
				var stag = '<a href="'+href+'"';
				if (hreflang) { stag = stag+' hreflang="'+hreflang+'"'; }
				stag = stag+'>';
				etag = '</a>';
			}
			
			encloseSelection(stag,etag);
		});
	}
	
	function btImgLink(label,msg_src)
	{
		addButton(img_path+'bt_img_link.png',label,
		function() {
			encloseSelection('','',
			function(str) {
				var src = window.prompt(msg_src,'');
				if (!src) { return str; }
				
				if (getFormat() == 'wiki') {
					if (str) {
						return '(('+src+'|'+str+'))';
					} else {
						return '(('+src+'))';
					}
				} else {
					if (str) {
						return '<img src="../index_files/'+src+'" alt="'+str+'" />';
					} else {
						return '<img src="../index_files/'+src+'" alt="" />';
					}
				}
			});
		});
	}
	
	function btImg(label,url)
	{
		addButton(img_path+'bt_img.png',label,
		function() {
			popup(url);
		});
	}
	
	function insImg(src)
	{
		if (document.all) {
			textarea.focus();
			if (getFormat() == 'wiki') {
				textarea.value = textarea.value+'(('+src+'))';
			} else {
				textarea.value = textarea.value+'<img src="../index_files/'+src+'" alt="" />';
			}
		} else {
			encloseSelection('','',
			function(str) {
				if (getFormat() == 'wiki') {
					if (str) {
						return '(('+src+'|'+str+'))';
					} else {
						return '(('+src+'))';
					}
				} else {
					if (str) {
						return '<img src="../index_files/'+src+'" alt="'+str+'" />';
					} else {
						return '<img src="../index_files/'+src+'" alt="" />';
					}
				}
			});
		}
	}
	
	// methods
	this.addButton		= addButton;
	this.addSpace		= addSpace;
	this.draw			= draw;
	this.btStrong		= btStrong;
	this.btEm			= btEm;
	this.btIns		= btIns;
	this.btDel		= btDel;
	this.btQ			= btQ;
	this.btCode		= btCode;
	this.btBr			= btBr;
	this.btBquote		= btBquote;
	this.btPre		= btPre;
	this.btList		= btList;
	this.btLink		= btLink;
	this.btImgLink		= btImgLink;
	this.btImg		= btImg;
	this.insImg		= insImg;
}
