// Foncrtions liées à l'éditeur WYSIWYG
function FCKeditor_OnComplete( editorInstance )
{
	//editorInstance.Events.AttachEvent( 'OnBlur' , FCKeditor_OnBlur ) ;
	//editorInstance.Events.AttachEvent( 'OnFocus', FCKeditor_OnFocus ) ;
}
function FCKeditor_OnBlur( editorInstance )
{
	//editorInstance.ToolbarSet.Collapse() ;
}
function FCKeditor_OnFocus( editorInstance )
{
	//editorInstance.ToolbarSet.Expand() ;
}

// Ouverture d'une nouvelle fenêtre du navigateur
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

// Trouve un élément
function findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

// Valide un formulaire
function validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' doit contenir une adresse e-mail valide.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' doit contenir un nombre.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' doit contenir une nombre entre '+min+' et '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+args[i+1]+' est nécessaire.\n'; }
  } if (errors) alert(errors);
  document.returnValue = (errors == '');
}

// Confirmation de suppression
function doConfirm(msg, url)
{
	var res = confirm(msg);
	
	if ( res )
	{
		if ( url != '' )
		{
			self.location = url;
		}
		else
		{
			return res;
		}
	}
	else
	{
		if ( url == '' )
		{
			return res;
		}
	}
}

// Inverse le cochage des checkboxes
function invertAllCheckboxes(formname,groupName)
{
	for( i = 0 ; i < formname.length ; i++ )
	{
		if (formname.elements[i].group != groupName)
		{
			var o = formname.elements[i];
			
			if (o.type == 'checkbox')
			{
				o.checked = ( o.checked == true ) ? false : true;
			}
		}
	}
}

// Coche toutes les checkboxes
function setAllCheckboxes(formname,groupName,value)
{
	for( i = 0 ; i < formname.length ; i++ )
	{
		if (formname.elements[i].jsall != groupName)
		{
			var o = formname.elements[i];
			
			if (o.type == 'checkbox' && !o.disabled )
			{
				o.checked = value;
			}
		}
	}
}

// Calcule le montant TTC
function calcTaxedPrice(from, to, taxclass)
{
	if ( !TaxRates[taxclass.value] )
	{
		var rate = 0;
	}
	else
	{
		var rate = TaxRates[taxclass.value];	
	}
	
	var el = document.getElementById(from);
	
	if ( !el ) return;
	
	var price = el.value * 1;
	
	var new_price = price * ( 1 + ( rate / 100 ) );
	
	var obj = document.getElementById(to);
	
	if ( !obj ) return;
	
	var np = new_price.toFixed(4);
	np = np.replace(/[0]+$/g, '');
	np = np.replace(/\.$/g, '');
	
	obj.value = np;
	/*from.value = price.toFixed(4);*/
}

// Calcule le montant HT
function calcPrice(from, to, taxclass)
{
	if ( !TaxRates[taxclass.value] )
	{
		var rate = 0;
	}
	else
	{
		var rate = TaxRates[taxclass.value];	
	}
	
	var el = document.getElementById(from);
	
	if ( !el ) return;
	
	var price = el.value * 1;
	
	var new_price = price / ( 1 + ( rate / 100 ) );
	
	var obj = document.getElementById(to);
	
	if ( !obj ) return;
	
	var np = new_price.toFixed(4);
	np = np.replace(/[0]+$/g, '');
	np = np.replace(/\.$/g, '');
	
	obj.value = np;
	/*from.value = price.toFixed(4);*/
}

// ???
function activateCategoryOrder(id)
{	
	c=findObj('cat' + id);
	s=findObj('cat' + id + '_order');
	
	s.disabled = !c.checked;	
}

// Autorise la saisie de prix pour ce groupe
function activateGroupPrice(id)
{
	o = document.getElementById('Groups['+id+'][Active]');
	//
	pa = document.getElementById('Price'+id);
	tpa = document.getElementById('_TaxedPrice'+id);
	//
	if ( o.checked == true )
	{
		pa.style.visibility = 'visible';
		tpa.style.visibility = 'visible';
	}
	else
	{
		pa.style.visibility = 'hidden';
		tpa.style.visibility = 'hidden';
	}
}

// Autorise la saisie de prix pour les groupes
function activateGroupPrices()
{
	i = 0;
	
	var o = document.getElementById("Groups["+i+"][Active]");
	
	while( o )
	{
		activateGroupPrice(i);

		i++;

		var o = document.getElementById("Groups["+i+"][Active]");
	}
}

// Affiche ou masque un élément
function displayElement(elt, show)
{
	var o = findObj(elt);
	
	if ( o )
	{
		if ( show )
		{
			o.style.display = "";
		}
		else
		{
			o.style.display = "none";
		}
	}
	
	return false;
}

// Affiche un ou plusieurs éléments
function showElements()
{
	var args = showElements.arguments;
	
	for ( i = 0 ; i < args.length ; i++ )
	{
		displayElement(args[i], true);
	}
}

// Masque un ou plusieurs éléments
function hideElements()
{
	var args = hideElements.arguments;
	
	for ( i = 0 ; i < args.length ; i++ )
	{
		displayElement(args[i], false);
	}
}

// Affiche plusieurs éléments
function switchElementsByTagName(obj, tag, id)
{
	var o = findObj(obj);
	
	if ( o )
	{
		var elts = o.getElementsByTagName(tag);

		for( i = 0 ; i < elts.length ; i++ )
		{
			if ( elts[i].id == id || id == '' )
			{
				if ( elts[i].style.display == "none" )
				{
					elts[i].style.display = "";
				}
				else
				{
					elts[i].style.display = "none";
				}
			}
		}
	}								 
}

// Tronque une chaîne de caractères
function truncateStr(str,length,chr,end)
{
	if ( str.length <= length ) return str;
	
	return str.substring(0, length) + end;	
}

// Définition des champs spéciaux : product, client, option, image, etc.
function SetUrl( fileUrl, width, height, alt, field )
{
	var o = window.__currentBrowsingField;
	
	if ( o )
	{
		window.__currentBrowsingField.addItem(fileUrl, alt);	
	}

/*
	if ( !field && !document.__BrowseFieldId ) return false;
	
	if ( !field ) field = document.__BrowseFieldId;
	
	var d = document.getElementById(field+'_display');
	var v = document.getElementById(field);
	
	if ( d && v )
	{
		str = fileUrl;
		
		if ( fileUrl.match('(\.gif|\.jpg|\.jpeg|\.png|\.bmp)$') )
		{
			str = '<img src="' + WebsiteUrl + fileUrl + '" border="0" alt="" height="60" />';
		}
		
		d.innerHTML = str;
		
		v.value = fileUrl;
		
		var del = document.getElementById(field+'_delete');
		
		if ( del ) del.style.visibility = 'hidden';

		if ( del && fileUrl ) del.style.visibility = 'visible';
		
	}
	
	return false;
*/
}
function SetDateField( date, formated, field )
{
	var d = document.getElementById(field+'_display');
	var v = document.getElementById(field);
	
	if ( d && v )
	{
		d.innerHTML = formated;
		v.value = date;
	}
}
function SetImageUrl( fileUrl, width, height, alt, field )
{
	return SetUrl( fileUrl, width, height, alt, field );
}

function setProductField(id, name, field)
{
	return SetField(id, name, field);
}
function setOptionField(id, name, field)
{
	return SetField(id, name, field);
}
function setSubscriberField(id, name, field)
{
	return SetField(id, name, field);
}
function setFormationField(id, name, field)
{
	return SetField(id, name, field);
}
function setFormationEventField(id, name, field)
{
	return SetField(id, name, field);
}

function SetField(id, name, field)
{
	if ( !field && !document.__BrowseFieldId ) return false;
	
	if ( !field ) field = document.__BrowseFieldId;
	
	var input = document.getElementById(field);
	var display = document.getElementById(field+'_display');
	
	if ( input && display )
	{
		input.value = id;
		display.innerHTML = name;
		
		var del = document.getElementById(field+'_delete');
		
		if ( del ) del.style.visibility = 'hidden';

		if ( del && id ) del.style.visibility = 'visible';
		
		return true;
	}
	
	return false;	
}

// Ouverture des fenêtres de browsing
function browseSubscribers(field, url)
{
	document.__BrowseFieldId = field;
	
	MM_openBrWindow(url, 'Browse', 'width=640,height=340');	
}
function browseFormations(field, url)
{
	document.__BrowseFieldId = field;
	
	MM_openBrWindow(url, 'Browse', 'width=640,height=340');	
}
function browseFormationEvents(url_formation_id, formation, field, url)
{
	if ( obj = document.getElementById(formation) )
		{
			if ( obj.value )
			{
				url += '&' + url_formation_id + '=' + obj.value;
			}
		}	
	
	document.__BrowseFieldId = field;
	
	MM_openBrWindow(url, 'Browse', 'width=640,height=340');	
}
function browseProducts(field, url)
{
	document.__BrowseFieldId = field;
	
	MM_openBrWindow(url, 'Browse', 'width=640,height=340');	
}
function browseOptions(field, url)
{
	document.__BrowseFieldId = field;
	
	MM_openBrWindow(url, 'Browse', 'width=640,height=350');	
}
function browseFile(field, url)
{
	document.__BrowseFieldId = field;
	
	var d = document.getElementById(field);
	window.__currentBrowsingField = d;
	
	if ( d ) url += '&CurrentFile=' + d.value;

	MM_openBrWindow(url, 'Browse', 'width=700,height=480,resizable=yes');	
}

function setBrowseField(id, name, field, del)
{
	if ( !field && !document.__BrowseFieldId ) return;
	
	if ( !field ) var field = document.__BrowseFieldId;
	
	var input = document.getElementById(field);
	var display = document.getElementById(field+'_display');
	
	if ( input && display )
	{
		input.value = id;
		display.innerHTML = name;
		
		if ( !del ) displayDeleteIcon(field, id);
		
		document.__BrowseFieldId = null;
		
		return true;
	}
	
	return false;	
}

function displayDeleteIcon(field, value)
{
	var d = document.getElementById(field+'_delete');

	if ( d ) d.style.visibility = ( value != '' && value != '0' ) ? 'visible' : 'hidden';
}

