/*
** Copyright Mesange 2002
** auteur		:	mesange		- mesange@meloo.com
** fonctions	:	*  
					-
** librairie	:
** utilisation	:


*/

/*
**	initilisations
*/

var fNames		= new Array();
var aNames		= new Array();
var fo			= new Array();
fo['Nform']		= 0;
var multi		= 0;
var curForm 	= null;
var curMenu		= null;
var curTxtArea	= null;
var editFolder	= null;
var brtype		= ((document.all) ? 1 : 0);
// Define the bbCode tags
//bbcode		= new Array();
// array of tags cod for function isSpeTag(...); && setSpeTag(...);
selectTags			= new Array('color','size');
// values by cods for BBtags
bbtags			= new Array();
bbtags['b'] 	= new Array('[b]','[/b]');
bbtags['i'] 	= new Array('[i]','[/i]');
bbtags['u'] 	= new Array('[u]','[/u]');
bbtags['q'] 	= new Array('[quote]','[/quote]');
bbtags['c'] 	= new Array('[code]','[/code]');
bbtags['a'] 	= new Array('[url]','[/url]');
bbtags['color']	= new Array('[color=]', '[/color]');
bbtags['size']	= new Array('[size=]', '[/size]');
// help lines by cods
b_help 			= "Texte gras: [b]texte[/b]   (alt+b)";
i_help 			= "Texte italique: [i]texte[/i]   (alt+i)";
u_help 			= "Texte souligné: [u]texte[/u]   (alt+u)";
q_help 			= "Citation: [quote]texte cité[/quote]   (alt+q)";
c_help 			= "Afficher du code: [code]code[/code]   (alt+c)";
a_help 			= "Insérer un lien absolu: [url]http://url/[/url] ou relatif: [url]../page.ext[/url]  (alt+w)";
// ou [url=http://url/]Nom[/url]
close_help 		= "Fermer toutes les balises BBCode ouvertes";
color_help		= "Couleur du texte: [color=red]texte[/color] Astuce: #FF0000 fonctionne aussi";
size_help		= "Taille du texte: [size=x-small]texte en petit[/size]";


/*
** functions
*/
function	preloadEdit(){
	MM_preloadImages(editFolder+'ic_b.gif',editFolder+'ic_i.gif',editFolder+'ic_u.gif',editFolder+'ic_q.gif',editFolder+'ic_c.gif',editFolder+'ic_a.gif',editFolder+'ic_close.gif');
	MM_preloadImages(editFolder+'ico_b.gif',editFolder+'ico_i.gif',editFolder+'ico_u.gif',editFolder+'ico_q.gif',editFolder+'ico_c.gif',editFolder+'ico_a.gif',editFolder+'ico_close.gif');
}

function	preview(addr,target,largeur,hauteur,top)
{
  if (top == 0)
    top = 15;
  l = "";
  h = "";
  if (largeur == 0)
      l = ",width=800";
  
  if (hauteur == 0)
      h = ",height=600";
  var center = 0;
  //(screen.width - largeur)/2;
  window.open(addr,target,"directories=1,scrollbar=1,left=" + center +",location=1,menubar=1,status=go,toolbar=1,top=" + top + l + h);
  //window.open(addr,target,'toolbar=no, location=no, status=no, scrollbar=yes, titlebar=no, alwaysLowered=no, z_lock=no, alwaysRaised=yes, dependant=yes, resizeable=yes, innerHeight='+h+', innerWidth='+l);
}

// --- area settings
function	add_area(form, area){
	ret = 0;
	if (!fo[form]){
		fo['Nform'] += 1;
		fo[form] = new Array();
		fNames['f'+fo['Nform']] = form;
		fo[form]['Narea']	= 0;
	}
	if (!fo[form][area]){
		fo[form]['Narea'] 	+= 1;
		fo[form][area] = new Array();
		aNames['a'+fo[form]['Narea']] = area;
		fo[form][area]['Nopen'] = null;
	}
	else
		ret = 1;
	return (ret);
}

function	whereAmI(form, area){
	curForm 		= form;
	curMenu 		= area;
	if (!multi){
		curTxtArea	= area;
}}

function	unsetAllArea(){
	for (var i=0; i < fo['Nform']; i++)
	{
		var form = fNames['f'+(i+1)];
		for (var j=0; j < fo[form]['Narea']; j++)
		{
			var area = aNames['a'+(j+1)];
			swapImg('b_'+area,'', editFolder+'language/french/img/ic_sel.gif',1);
			/*
			var buttonTxt = document[form]['b_'+area].value;
			var len = buttonTxt.length;
			if (buttonTxt.substr((len-1), len) == '*')
				document[form]['b_'+area].value = buttonTxt.substr(0, (len-1));
			*/
}}}

function	setArea(form, area){
	curFrom		= form;
	curTxtArea	= area;
	unsetAllArea();
	if (fo[curForm][curTxtArea]['Nopen'] > 0)
		swapImg('c_'+curMenu,'', editFolder+'language/french/img/ico_close.gif',1);
	else
		swapImg('c_'+curMenu,'', editFolder+'language/french/img/ic_close.gif',1);
	swapImg('b_'+area,'', editFolder+'language/french/img/ico_sel.gif',1);
	//document[curForm]['b_'+area].value += '*';
}

// --- help and errorGestion functions
function	Noarea(){
	if (brtype == 1){
		alert('Please select your working Textarea by clicking'+
			  '\nin the Textarea you want to write in'+
			  '\nor on the button near his top-left corner.');
	}else{
		alert('Please select your working Textarea by clicking'+
			  '\non the button near the top-left corner of the Textarea'+
			  '\nyou want to write in.');
}}

function	helpline(cod){
	if (!curForm || !curMenu){
		NoArea();
	}else{
		if (document[curForm][curMenu+'_help'])
			document[curForm][curMenu+'_help'].value = eval(cod+"_help");
}}

// --- editor functions

function	isSelTag(cod){
	var ret = 0;
	for (var i=0; selectTags[i] && !ret; i++){
		if (cod == selectTags[i])
			ret = 1;
	}
	return (ret);
}
//onSelection for Windows Internet Explorer
function	ieSelect(cod){
	var theSelection	= false;
	theSelection 		= document.selection.createRange().text;
	
	var beg = bbtags[cod][0];
	beg = beg.substr(0, beg.length-1);
	var value = document[curForm]['bbcod_'+curMenu+'_'+cod].options[document[curForm]['bbcod_'+curMenu+'_'+cod].selectedIndex].value;
	
	if (theSelection){
		document.selection.createRange().text = beg + value +']'+ theSelection + bbtags[cod][1];
		document[curForm][curTxtArea].focus();
		theSelection = '';
	}else{
		add_Open(cod);
		document[curForm][curTxtArea].value		+= beg + value +']';
}}

//onSelection for Netscape and globaly for non IE
function	netSelect(cod){
	var theSelection	= false;
	
	var beg = bbtags[cod][0];
	beg = beg.substr(0, beg.length-1);
	var value = document[curForm]['bbcod_'+curMenu+'_'+cod].options[document[curForm]['bbcod_'+curMenu+'_'+cod].selectedIndex].value;
	
	if (theSelection){
		alert('actSelect not implemented');
	}else{
		add_Open(cod);
		document[curForm][curTxtArea].value		+= beg + value +']';
}}

function	setSelTag(cod){
	if (brtype == 1){
		ieSelect(cod);
	}else{
		netSelect(cod);
}}

function	add_Open(cod){
	fo[curForm][curTxtArea]['Nopen'] 		+= 1;
	var i = fo[curForm][curTxtArea]['Nopen'];
	fo[curForm][curTxtArea]['s'+i] 			= new Array();
	fo[curForm][curTxtArea]['s'+i]['cod'] 	= cod;
}

function	ieSelected(cod){
	var theSelection	= false;
	theSelection 		= document.selection.createRange().text;
	
	if (theSelection){
		document.selection.createRange().text = bbtags[cod][0]+ theSelection + bbtags[cod][1];
		document[curForm][curTxtArea].focus();
		theSelection = '';
}}

function	setTag(cod){
	if (!fo[curForm][curTxtArea])
		add_area(curForm, curTxtArea);
	if (!isSelTag(cod)){
		if (!curForm || !curTxtArea){
			NoArea();
		}else{
			var theSelection	= false;
			theSelection 		= document.selection.createRange().text;
			if (theSelection){
				ieSelected(cod);
			}else{
				swapImg('c_'+curMenu,'', editFolder+'language/french/img/ico_close.gif',1);
				add_Open(cod);
				document[curForm][curTxtArea].value		+= bbtags[cod][0];
			}
	}}else{
		setSelTag(cod);
}}

function	closeTag(cod){
	var limit = fo[curForm][curTxtArea]['Nopen'];
	var pos = 0;
	for (var i=limit; !pos && (i>0); i--){
		if (fo[curForm][curTxtArea]['s'+i]['cod'] == cod)
			pos = i;
	}
	for (var j=pos; j<limit; j++){
		fo[curForm][curTxtArea]['s'+j]['cod'] = fo[curForm][curTxtArea]['s'+(j+1)]['cod'];		
	}
	fo[curForm][curTxtArea]['Nopen'] 	-= 1;
	document[curForm][curTxtArea].value += bbtags[cod][1];
}

function	closeAllTags(){
	var limit 	= fo[curForm][curTxtArea]['Nopen'];
	for (var i=limit; i>0; i--){
		var cod = fo[curForm][curTxtArea]['s'+i]['cod'];
		closeTag(cod);
	}
	return (true);
}

function	closeTagsEverywhere(){
	// to close tags during onSubmit
}

function	isOpen(cod){
	var ret		= 0;
	if (fo[curForm][curTxtArea]){
		var limit 	= fo[curForm][curTxtArea]['Nopen'];
		for (var i=limit; i>0 && !ret; i--){
			if (fo[curForm][curTxtArea]['s'+i])
			if (fo[curForm][curTxtArea]['s'+i]['cod'] == cod)
				ret = 1;
	}}	
	return (ret);
}

function	bbcod(cod){
	if (!curTxtArea){
		NoArea();
	}else{
		if (fo[curForm][curTxtArea]['Nopen'] > 0)
			swapImg('c_'+curMenu,'', editFolder+'language/french/img/ico_close.gif',1);
		else
			swapImg('c_'+curMenu,'', editFolder+'language/french/img/ic_close.gif',1);
		if (brtype != 1)
			helpline(cod);	
		if (cod == 'close'){
			closeAllTags();
			swapImg('c_'+curMenu,'', editFolder+'language/french/img/ic_close.gif',1);
		}else{
			if (isOpen(cod)){
				closeTag(cod);
				if (fo[curForm][curTxtArea]['Nopen'] == 0)
					swapImg('c_'+curMenu,'', editFolder+'language/french/img/ic_close.gif',1);
			}else{
					setTag(cod);
}}}}