//CR 13783 CCA : prohibition of data duplication in data base

function disableButtons(buttonName)
{
	var btn = document.getElementsByName(buttonName);
	for (i=0; i<btn.length; i++)
    {
		btn[i].disabled = true;
    }
	btn.disabled = true;
}

function submitForm(form)
{
	form.submit();
}

function trimForm(form)
{
	for(i=0; i<form.elements.length; i++)
	{
		elt = form.elements[i];
		if (elt.type == "text")
		{
			elt.value = trim(elt.value);
		}
	}
}

function trim(s) 
{
    return s.replace(/^\s+/, '').replace(/\s+$/, '');
}


function selectallInForm(form)
{
	for(i=0; i<form.elements.length; i++)
	{
		elt = form.elements[i];
		if (elt.type == "select-multiple" && elt.multiple == true )
		{
			selectall(elt);
		}
	}
}

function selectall(selectobj)
{
	for(var i=0; i<selectobj.options.length; i++)
	{
		selectobj.options[i].selected=true;
	}	
}

function unSelectallInForm(form)
{
	for(i=0; i<form.elements.length; i++)
	{
		elt = form.elements[i];
		if (elt.type == "select-multiple" && elt.multiple == true )
		{
			unSelectall(elt);
		}
	}
}

function unSelectall(selectobj)
{
	for(var i=0; i<selectobj.options.length; i++)
	{
		selectobj.options[i].selected=false;
	}	
}


/* ---- Selection et deplacement multiple d'une liste vers une autre -----*/
// objdep : liste depart
// abjarr : liste destinataire
function select_multiple(objdep,objarr){	
	var i= 0;
	while(i<objdep.options.length){
		if(objdep.options[i].selected==true){
			var val = objdep.options[i].value;
			if(val!="vide"){
				var texte = objdep.options[i].text;
				var taille = objarr.options.length;
				if(taille==1){
					var premierelt = objarr.options[0].value;
					if(premierelt=="vide"){
						objarr.options[0]=null;
						taille=taille-1;
					}
				}
				inserer(objdep.options[i],objarr);	
				objdep.options[i]=null;
			}		
		}else{
			i++;
		}			
	}
}

function comparerChaines(ch1, ch2)
	{
		var i=0;
		var first=0;
		var continuer=0;

		while(i<ch1.length && i<ch2.length && continuer==0){
			if(ch1.charAt(i) != ch2.charAt(i)){
				if(ch1.charAt(i) < ch2.charAt(i)){
					//CCA CR 13687 CCA : add promotion code : descending sort
					//first=1;
					first = 2;
					continuer=1;
				}
				else{
					//CCA CR 13687 CCA : add promotion code : descending sort
					//first=2;
					first = 1;
					continuer=1;
				}
			}
			i=i+1;
		}
		if(first==0){
			if(ch1.length != ch2.length){
				if(ch1.length<ch2.length){
					//CCA CR 13687 CCA : add promotion code : descending sort
					//first=1;
					first = 2;
				}
				else{
					//CCA CR 13687 CCA : add promotion code : descending sort
					//first=2;
					first = 1;
				}
			}
		}
		return first;
	}


function inserer(objDep,objsArr)
	{
		continuer=0;
		insertion=0;
		k=0;
		taille = objsArr.options.length;
		
		if(taille>0){
			while(continuer == 0){
				//Tester les textes et non les values car value est une clé ici et ne correspond pas 
				//forcément au libellé affiché à l'écran

				//Si la value possède des chiffres cachés, on les enlève temporairement
				
				//CCA CR 13687 CCA : add promotion code : value replaces text
				objE = objDep.value;
				objS = objsArr.options[k].value;
				
				posE = objE.search(/[0-9]/);
				posS = objS.search(/[0-9]/);
				
				if(posE == 0){
					posDollar = objE.search(/[$]/);
					objE = objE.substring(posDollar,objE.length);
				}
				
				if(posS == 0){
					posDollar = objS.search(/[$]/);
					objS = objS.substring(posDollar,objS.length);
				}
				
				// !!! enleverAccents is empty => see function for details
				objE = enleverAccents(objE);
				objS = enleverAccents(objS);
				
				if(comparerChaines(objE.toUpperCase(),objS.toUpperCase()) < 2){
					//insertion
					temp1 = objsArr.options[k].text;
					temp2 = objsArr.options[k].value;
					objsArr.options[k].text = objDep.text;
					objsArr.options[k].value = objDep.value;
					k = k+1;
					
					while(k < taille){
						texte   = objsArr.options[k].text;
						val = objsArr.options[k].value;
						objsArr.options[k].text = temp1;
						objsArr.options[k].value = temp2;
						temp1 = texte;
						temp2 = val;
						k = k+1;
					}
					//on augmente la taille de 1 avec la derniere insertion
					var nvOption = new Option(temp1,temp2);
					objsArr.options[k] = nvOption;
					objDep 	  = null;
					continuer = 1;
					insertion = 1;
				}
				else{
					k = k+1;
				}
				if(k == taille && continuer == 0 && insertion == 0){
					continuer = 1;
				}
			}
			if(insertion == 0){
				var nvOption = new Option(objDep.text,objDep.value);
				objsArr.options[k] = nvOption;
			}
		}
		else{
			temp1 = objDep.text;
			temp2 = objDep.value;
			var nvOption = new Option(temp1,temp2);
			objsArr.options[k] = nvOption;
			//objDep 	  = null;
		}
	}

function enleverAccents(str) 
{
	// !!! problem with accents not recognized by ie => encoding problem, encoding must be iso-8859-1
	//var re     = new RegExp('[éèêë]','gi');
	return str;

	//var re     = new RegExp("[éèêë]","gi");
	//var newStr = str.replace(re,"e");

	/*re     = new RegExp('[àäâ]','gi');
	newStr = newStr.replace(re,"a");

	re     = new RegExp('[îï]','gi');
	newStr = newStr.replace(re,"i");

	re     = new RegExp('[ùûü]','gi');
	newStr = newStr.replace(re,"u");
	
	re     = new RegExp('[ôö]','gi');
	newStr = newStr.replace(re,"o");

	re     = new RegExp('[ç]','gi');
	newStr = newStr.replace(re,"c");

	re     = new RegExp('[ñ]','gi');
	newStr = newStr.replace(re,"n");*/

	//return newStr;
}




function addElement(htmlType, type, id, size, maxLength, name, value, styleClass, height)
{
	var elt = document.createElement(htmlType);
	
	if (id != null && id != "")
		elt.id=id;
	
	if (type != null && type != "")
		elt.type=type;
	
	if (size != null && size != "")
		elt.size=size;
		
	if (maxLength != null && maxLength != "")
		elt.maxLength=maxLength;
	
	if (name != null && name != "")
		elt.name=name;
	
	if (value != null && value != "")
		elt.value=value;
	
	if (styleClass != null && styleClass != "")
		elt.className=styleClass;
		
	elt.height=height;
	
	if(type == "button")
		addEvent(elt, 'click', deleteLine);

	
	return elt;
}

function addEvent( obj, type, fn )
{
   if ( obj.attachEvent ) 
   {
     obj['e'+type+fn] = fn;
     obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
     obj.attachEvent( 'on'+type, obj[type+fn] );
   } 
   else
     obj.addEventListener( type, fn, false );
}
 
function removeEvent( obj, type, fn ) {
   if ( obj.detachEvent ) 
   {
     obj.detachEvent( 'on'+type, obj[type+fn] );
     obj[type+fn] = null;
   }
   else
     obj.removeEventListener( type, fn, false );
} 



function addOption(id, text, it)
{
	var elt = document.getElementById(id);
	var option = document.createElement('option');
	option.text = text;
	option.value = text;
	try 
	{	 
		//IE
		elt.add(option, it);
	}
	catch(e) 
	{ 
		//si erreur fait methode pour navigateur DOM compliant
		elt.add(option, null);
	}
}

function getFirstIdAvailable(balise)
{
	found = false;
	i = 1;
	id = 0;
	while(! found)
	{
		elt = document.getElementById(balise + i);
		if(elt != null)
			id = i;
		else
			found = true;
		i++;
	}
	
	return id;
}
