  /*
    Copyright (c) 2009 Muneer Mohammad (http://www.encodez.com/)
    Permission is hereby granted, free of charge, to any person obtaining
    a copy of this code, to deal in the code without restriction, including
    without limitation the rights to use, copy, modify, merge, publish,
    distribute, sublicense, and/or sell copies of the code, and to
    permit persons to whom the Software is furnished to do so, subject to
    the following conditions:
     
    The above copyright notice and this permission notice shall be
    included in all copies or substantial portions of the code.
    
    THE CODE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    WITH THE CODE OR THE USE OR OTHER DEALINGS IN THE CODE.
  */
  
  
  var gTop=0;
  var gIncVal=0;
  // var timeOutValue can be used to adjust the speed of scroller.
  var timeOutValue=10;
    
    
  function scrollMe(arg)
  {    
    var objEncNav=document.getElementById('encNav');
    
    // var scrollAmount define the fast and
    // the amount of scrolling pane
    var scrollAmount=110;
    var objEncNavHeight=parseInt(objEncNav.offsetHeight);
    var objEncNavTop=objEncNav.style.top;
    
    // var barHeight defines the heigt of inner layer
    // it must set -10 from max height
    var barHeight=100;   
    
    if(!objEncNavTop)
      objEncNavTop=0;
    else
      objEncNavTop=objEncNavTop.substring(0,objEncNavTop.length-2);
      
    if(arg>0)
    {
      if(objEncNavTop>=0 || objEncNavTop>(-(objEncNavHeight-(barHeight+scrollAmount))))
      {
        incrementValue=scrollAmount;
      }
      else if(objEncNavTop<(-(objEncNavHeight-(barHeight+scrollAmount))))
      {
        incrementValue=(objEncNavHeight-barHeight)+parseInt(objEncNavTop);
      }
      else
      {
        incrementValue=0;
      }
      encSmoothScroll("minus", parseInt(objEncNavTop), parseInt(incrementValue));
    }
    else
    {
      if(objEncNavTop<0 && ((parseInt(objEncNavTop)+scrollAmount) < 0))
      {
        incrementValue=scrollAmount;
      }
      else
      {
        incrementValue=-objEncNavTop-0;     
      }
      encSmoothScroll("plus", parseInt(objEncNavTop), parseInt(incrementValue));
    }
  }
  function encSmoothScroll(dir, currentVal, incValue)
  {
    gTop=currentVal;
    gIncVal=incValue;
    encScrollBy(dir, 0)
  }
  function encScrollBy(dir, val)
  { 
    if(val<gIncVal)
    {
      var tmpInc;      
      if((gIncVal-val)>1)      
      {
        tmpInc=Math.ceil((gIncVal-val)/10);
        if(tmpInc <1)
          tmpInc=1;
      }
      else
      {
        tmpInc=gIncVal-val;
      }
      
      val+=tmpInc;
      
      var objEncNav=document.getElementById('encNav');
      if(dir=="plus")
      {
        objEncNav.style.top=gTop+val+"px";
      }
      else if(dir=="minus")
      {
        objEncNav.style.top=gTop-val+"px";
      }
      var t=setTimeout("encScrollBy('"+dir+"', "+val+");", timeOutValue);
    }
    else
    {
      clearTimeout(t);
    }
  }

/* =================================================================================== */

function getObject(objectId) {
    // cross-browser function to get an object  given its id
    if(document.getElementById && document.getElementById(objectId)) {
        // W3C DOM
        return document.getElementById(objectId);
    } else if (document.all && document.all(objectId)) {
        // MSIE 4 DOM
        return document.all(objectId);
    } else if (document.layers && document.layers[objectId]) {
        // NN 4 DOM.. note: this won't find nested layers
        return document.layers[objectId];
    } else {
        return false;
    }
}


function toggleDisplay(objectid) {
    var object = getObject(objectid);
    if (object) {
      if (object.style.display == "none") {
        object.style.display = '';
      } else {
        object.style.display = "none";
      }
    } else {
        alert("did not find object "+ objectid);
    }
}
function displayObject(objectid) {
    var object = getObject(objectid);
    if (object) {
        object.style.display = '';
    } else {
        //alert("did not find object "+ objectid);
    }

}
function hideObject(objectid) {
    var object = getObject(objectid);
    if (object) {
        object.style.display = 'none';
    } else {
        //alert("did not find object "+ objectid);
    }

}

function setLayerVisibility(layerName, value)
{
  if (document.getElementById) {
    document.getElementById(layerName).style.visibility = value;
  }
  else if (document.layers && document.layers[object] != null) {
    document.layers[layerName].visibility = value;
  }
  else if (document.all) {
    document.all[layerName].style.visibility = value;
  }
}

/* Show specified layer (given argument must be layer's id attribute value) */
function showLayer(layerName)
{
  setLayerVisibility(layerName, 'visible');
}

/* Hide specified layer (given argument must be layer's id attribute value) */
function hideLayer(layerName)
{
  setLayerVisibility(layerName, 'hidden');
}

/* submit form */
function submitProjetRemoveChild(childID)
{
	getObject("childID").value  = childID;
	document.Form.action = 'DoProjetRemoveChild.event';

	document.Form.submit();
}

function submitRemoveAddress(addressID)
{
	if(confirm('Voulez-vous supprimer définitivement cette adresse')){		
		getObject("addressID").value  = addressID;
		document.Form.action = 'DoPreferencesAdressesRemove.event';
		document.Form.submit();
	}
	
}

function submitCourtierRemoveVendeur(vendeurOID)
{
	getObject("VendeurOID").value  = vendeurOID;
	document.Form.action = 'DoCourtierRemoveVendeur.event';

	document.Form.submit();
}

function setProductAndDoSubmit(productCode) {
	document.Form.action = 'DoTarifProduit.event';
	getObject("ProductCode").value  = productCode;	
    document.Form.submit();
}
function submit() {	 
    document.Form.submit();
}
function radioSubmit(radio) {
	submit();

}

function copyOrClearAdresse(copy){

	if(copy == "true"){
		//copy firstname and lastname
		var nom = getObject("PH_Nom").value;
		var prenom = getObject("PH_Prenom").value;	
		getObject("C_RIBTitulaire").value = nom.toUpperCase() + " " + prenom.toUpperCase();
		
		//copy address
		var bat = getObject("ADR_Batiment").value;
		var nr = getObject("ADR_Numero").value;
		var typeVoie = getObject("ADR_TypeVoie").value;		
		var nomVoie = getObject("ADR_NomVoie").value;
		var bis = getObject("ADR_Bis").value;
		var bp = getObject("ADR_BoitePostale").value;
		var codePostal = getObject("ADR_CodePostal").value;								
		var ville = getObject("ADR_Ville").value;	

		var cotRibAdr = "";
		if (bat != "") {
			//cotRibAdr = cotRibAdr + "Bat. "+ bat + "\n";
			cotRibAdr = cotRibAdr + bat + "\n";
		}
		if (nr != "") {
			cotRibAdr = cotRibAdr + nr + " ";
		}
		if(bis != "" && bis != " "){
			cotRibAdr = cotRibAdr + bis + " ";
		}
		if(typeVoie != ""){
			cotRibAdr = cotRibAdr + typeVoie + " ";
		}
		if(nomVoie != ""){
			cotRibAdr = cotRibAdr + nomVoie;
		}
		cotRibAdr += "\n";
		if(bp && bp != ""){
			//cotRibAdr = cotRibAdr + "BP " + bp + "\n";
			cotRibAdr = cotRibAdr + bp + "\n";
		}
		if(codePostal != ""){
			cotRibAdr = cotRibAdr + codePostal + " ";
		}
		if(ville != ""){
			cotRibAdr = cotRibAdr + ville;
		}		
						
		getObject("C_RIBAdresse").value = cotRibAdr;
		
	}else{
		getObject("C_RIBTitulaire").value = "";
		getObject("C_RIBAdresse").value = "";
	}
}

function setupRegimeSocialForAll() {

	var spouseRattachement = document.Form.SPRattachement;
	if (spouseRattachement) {
		copyInfo(spouseRattachement.name, spouseRattachement.value);
	}

	for (i=0; i<document.Form.elements.length; i++) {
    	var field = document.Form.elements[i];
    	    	
    	if (field.name.match('Rattachement') && field.name.substring(0,2) == 'CH') {
    		copyInfo(field.name, field.value);
    	}
    }
}

function setupLastNameForAll(theName) {

	var spouseNom = document.Form.SPNom;
	if (spouseNom && spouseNom.value == "") {
		spouseNom.value = theName;
	}
	
	for (i=0; i<document.Form.elements.length; i++) {
    	var field = document.Form.elements[i];
    	if (field.name.match('Nom') && field.name.substring(0,2) == 'CH' 
    	&& field.value == "") {
    		field.value = theName;
    	}
    }
}

function copyInfo(selectName, source)
{
	//alert("Copying with rattachement="+selectName+", source="+source);
		var theElementPrefix = selectName.substr(0,selectName.length-12);
		var theForm = document.Form;
		var readOnly = "false";
		var invalidRattachement = false;
		
		if(source.match('Assur')) {
			var inseeValue = theForm.PHInsee.value;
			var cleInseeValue = theForm.PHCleInsee.value;
			var orgAffValue = theForm.PHOrgAff.value;
			var loiMadelin = false;
			if (document.getElementById("PHLoiMadelinOuiINPUT")) {
				loiMadelin = document.getElementById("PHLoiMadelinOuiINPUT").checked;
			}
			//alert("PH loi madelin="+loiMadelin);
			readOnly = "true";
		} else if (source.match('Conjoint')) {
			var inseeValue = theForm.SPInsee.value;
			var cleInseeValue = theForm.SPCleInsee.value;
			var orgAffValue = theForm.SPOrgAff.value;
			readOnly = "true";
			
			var conjointRattachement = theForm.SPRattachement.value;
			//alert('rattachement conjoint: '+conjointRattachement + ' prefix='+theElementPrefix);
			if (conjointRattachement.match('Assur') && theElementPrefix.match('CH')) {
				invalidRattachement = true;
			}
		} else {
			var inseeValue = '';
			var cleInseeValue = '';
			var orgAffValue = '';		
		}
		
		if (invalidRattachement) {
			eval('theForm.'+selectName+'.selectedIndex=2');
			alert('Vous ne pouvez pas rattacher un enfant au conjoint: le conjoint est lui-même rattaché à l\'assuré!');
			inseeValue = '';
			cleInseeValue = '';
			orgAffValue = '';
			readOnly = "false";
		}
		
		var InseeField = eval("document.Form."+theElementPrefix+"Insee");
		if (InseeField) {
			if (readOnly == "true") {
				InseeField.value = inseeValue;
				InseeField.readOnly = true;
			} else {
				InseeField.readOnly = false;
			}
		}
		var CleInseeField = eval("document.Form."+theElementPrefix+"CleInsee");
		if (CleInseeField) {
			if (readOnly == "true") {
				CleInseeField.value = cleInseeValue;
				CleInseeField.readOnly = true;
			} else {
				CleInseeField.readOnly = false;
			}
		}
		var OrgAffField = eval("document.Form."+theElementPrefix+"OrgAff");
		if (OrgAffField) {
			if (readOnly == "true") {
				OrgAffField.value = orgAffValue;
				OrgAffField.readOnly = true;
			} else {
				OrgAffField.readOnly = false;
			}
		}
		if (theElementPrefix == "SP") {
			var LoiMadelinOui = document.getElementById("SPLoiMadelinOuiINPUT");
			var LoiMadelinNon = document.getElementById("SPLoiMadelinNonINPUT");
			
			if (readOnly == "true") {
				
				if (loiMadelin) {
					//alert("Màj Loi madelin oui");
					LoiMadelinNon.checked = false;
					LoiMadelinNon.disabled = true;
					LoiMadelinOui.checked = true;
					LoiMadelinOui.disabled = false;
				} else {
					if (LoiMadelinOui && LoiMadelinNon) {
						//alert("Màj Loi madelin non");
						LoiMadelinOui.checked = false;
						LoiMadelinOui.disabled = true;
						LoiMadelinNon.checked = true;
						LoiMadelinNon.disabled = false;
					}
					
				}
			} else {
				if (LoiMadelinOui && LoiMadelinNon) {
					LoiMadelinOui.disabled = false;
					LoiMadelinNon.disabled = false;
				}
			}

		}

}

function ongletOver(img) {
	imgURL = img.src;
	img.src = imgURL.replace(/_off/,"_on"); 
}
function ongletOut(img) {
	imgURL = img.src;
	img.src = imgURL.replace(/_on/,"_off"); 
}

/* Set field value to '' on click if different from the field's alt attribute */
function onclickField(field)
{
        if (field.value == field.alt) {
                field.value='';
        }
}
/* Set field value to its alt attribute onblur if no value */
function onblurField(field)
{
        if (field.value == '') {
                field.value=field.alt;
        }
}

function toggleSearchButton(link) {
	toggleDisplay('SearchDefinition');
	toggleDisplay('BundledSearchDefinition');
	var img = getObject('SearchToggleIMG');

	if (img.src.match('pictures/b_moins.gif')) {
		img.src = 'pictures/b_plus.gif';
	} else {
		img.src = 'pictures/b_moins.gif';
	}
}

function toggleTextAreaSize(tarea, imgId, minSize, maxSize) {
	var img = getObject(imgId);
	
	if (img.src.match('pictures/b_moins.gif')) {
		img.src = 'pictures/b_plus.gif';
	} else {
		img.src = 'pictures/b_moins.gif';
	}
	
	if (tarea.type == 'password' || tarea.type == 'text') {
		
		if (tarea.size == "") {
			tarea.size = maxSize * 15;
		} else {
			tarea.size = "";
		}
	} else {
		if (tarea.rows == minSize) {
			tarea.rows = maxSize;
		} else {
			tarea.rows = minSize;
		}
	}
}

function toggleExpandButton(img) {

	if (img.src.match('pictures/triangle_off.gif')) {
		img.src = 'pictures/triangle_on.gif';
	} else {
		img.src = 'pictures/triangle_off.gif';
	}
}

function str_repeat(i, m) { for (var o = []; m > 0; o[--m] = i); return(o.join('')); }

function sprintf () {
  var i = 0, a, f = arguments[i++], o = [], m, p, c, x;
  while (f) {
    if (m = /^[^\x25]+/.exec(f)) o.push(m[0]);
    else if (m = /^\x25{2}/.exec(f)) o.push('%');
    else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) {
      if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) throw("Too few arguments.");
      if (/[^s]/.test(m[7]) && (typeof(a) != 'number'))
        throw("Expecting number but found " + typeof(a));
      switch (m[7]) {
        case 'b': a = a.toString(2); break;
        case 'c': a = String.fromCharCode(a); break;
        case 'd': a = parseInt(a); break;
        case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break;
        case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break;
        case 'o': a = a.toString(8); break;
        case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break;
        case 'u': a = Math.abs(a); break;
        case 'x': a = a.toString(16); break;
        case 'X': a = a.toString(16).toUpperCase(); break;
      }
      a = (/[def]/.test(m[7]) && m[2] && a > 0 ? '+' + a : a);
      c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' ';
      x = m[5] - String(a).length;
      p = m[5] ? str_repeat(c, x) : '';
      o.push(m[4] ? a + p : p + a);
    }
    else throw ("Huh ?!");
    f = f.substring(m[0].length);
  }
  return o.join('');
}

///////////////////////////////////////////////////////////////////////////////

function checkForm(f)
	{
	o = getObject(f.id);
	if (o.BundledPatternINPUT.value.length ==0)
		{
		alert ("Merci de saisir une chaîne à rechercher !");
		o.BundledPatternINPUT.style.backgroundColor='#ffcc00';
		return false;
		}
	else
		{
		o.BundledPatternINPUT.style.backgroundColor='none';
		return true;
		}
	}