/*
	Key:	JSTOOLS
	Service:JavaScript Tools
	Part:	Fonction recurentes
	Version:Dcinet V2
*/

/*
 * retourne un message d'erreur
 */
function msgErreur(message,ele)
{
  if ( ele != null ) ele.focus();
  alert(message);
  return false;
}

/*
 * Set l'option de la combo
 */
function setselect(ele,val)
{
  for ( var i = 0 ; i < ele.length ; i++ )
  {
	if ( ele.options[i].value == val )
	{
	  if ( ele.selectedIndex != i )
		ele.selectedIndex = i;
	  return;
	}
  }
  selectedIndex = -1;
}

/*
 * Retourne la valeur de l'option de la combo selectionnée
 */
function getselect( ele )
{
  if ( ele.selectedIndex == -1 )
	return "";
  else
	return ele.options[ele.selectedIndex].value;
}

/*
 * Selection d'un bouton radio par sa valeur
 */
function setradio(ele,val)
{
  for ( var i = 0; i < ele.length; i++ )
  {
	if ( ele[i].value == val )
	{
	  ele[i].click();
	  return;
	}
  }
}

/*
 * Recuperation de la valeur du bouton radio selectionné
 */
function getradio(ele, defaut)
{
  if(ele.length)
  {
	for ( var i = 0; i < ele.length; i++ )
	{
	  if ( ele[i].checked )
		return ele[i].value;
	}
  }
  else
  {
	return ele.value;
  }
  return defaut;
}


/*
 * Permet de controler que des caracteres indesirables ne sont pas dans la zone
 */
function CheckForbiddenChar( ele, regex, message )
{
  var str= ele.value;
  var index = str.search(regex);
  if ( index >= 0 )
  {
	  ele.focus();
	  if(str.charCodeAt(index)==10)
	    message = message.replace("%1", "" );
	  else
      message = message.replace("%1", str.charAt(index) );
	  alert(message);
	  return false;
  }
  return true;
}

/*
 * ZeroDevant(zone, longueur )
 * complette une chaine de caratere avec des zeros devant.
*/
function ZeroDevant(zone,longueur)
{
  var ele = 0;
  var zero= "";

  for ( i = 1 ; i <= longueur; i++ )
	zero = zero + "0";

  ele = zero + zone.value ;
  zone.value = ele.substr(ele.length - longueur , longueur );
}

/*
 * CheckRIBAlert( CBanque,CGuichet,CNumCompte,CleRIB)
 * Controle la clé RIB et envoi un message d'erreur et redonne le focus sur la zone
 */
function CheckRIBAlert(CBanque,CGuichet,CNumCompte,CleRIB)
{
  var str;

  if ( CBanque.value == "" )
  {
	alert("Unos koda banke je obavezan.");
	CBanque.focus();
	return false;
  }

  if ( CGuichet.value == "" )
  {
	alert("Unos koda ekpoziture je obavezan.");
	CGuichet.focus();
	return false ;
  }

  if ( CNumCompte.value == "" )
  {
	alert("Unos broja računa je obavezan.");
	CNumCompte.focus();
	return false;
  }

  if ( CleRIB.value == "" )
  {
	alert("Unos ID Br° ključa banke je obavezan.");
	CleRIB.focus();
	return false;
  }

  str = CheckRIB( CBanque.value,CGuichet.value,CNumCompte.value,CleRIB.value);
  if ( str != "" )
  {
	alert( str );
	CBanque.focus();
	return false;
  }
  else
	return true;
}

/*
 * CheckRIB(CBanque,CGuichet,CNumCompte,CleRIB)
 * Controle la clé RIB
 */
function CheckRIB(CBanque,CGuichet,CNumCompte,CleRIB)
{
  var PN1 =0;
  var PN2 =0;
  var PN3 =0;
  var PN4 =0;
  var x   =0;

  PN1=CBanque *1; // Forcer la variable en Numerique
  PN2=CGuichet*1;
  PN3= PN1*100000 + PN2;
  PN3= PN3 % 97 ;
  PN3=PN3 * 10000000;
  PN3=PN3 % 97;
  PN3=( PN3 * 1000000 ) + 96;
  PN3=PN3 % 97 ;

  CNumCompte = CNumCompte.replace(new RegExp("A","g"),"1");
  CNumCompte = CNumCompte.replace(new RegExp("J","g"),"1");

  CNumCompte = CNumCompte.replace(new RegExp("B","g"),"2");
  CNumCompte = CNumCompte.replace(new RegExp("K","g"),"2");
  CNumCompte = CNumCompte.replace(new RegExp("S","g"),"2");

  CNumCompte = CNumCompte.replace(new RegExp("C","g"),"3");
  CNumCompte = CNumCompte.replace(new RegExp("L","g"),"3");
  CNumCompte = CNumCompte.replace(new RegExp("T","g"),"3");

  CNumCompte = CNumCompte.replace(new RegExp("D","g"),"4");
  CNumCompte = CNumCompte.replace(new RegExp("M","g"),"4");
  CNumCompte = CNumCompte.replace(new RegExp("U","g"),"4");

  CNumCompte = CNumCompte.replace(new RegExp("E","g"),"5");
  CNumCompte = CNumCompte.replace(new RegExp("N","g"),"5");
  CNumCompte = CNumCompte.replace(new RegExp("V","g"),"5");

  CNumCompte = CNumCompte.replace(new RegExp("F","g"),"6");
  CNumCompte = CNumCompte.replace(new RegExp("O","g"),"6");
  CNumCompte = CNumCompte.replace(new RegExp("W","g"),"6");

  CNumCompte = CNumCompte.replace(new RegExp("G","g"),"7");
  CNumCompte = CNumCompte.replace(new RegExp("P","g"),"7");
  CNumCompte = CNumCompte.replace(new RegExp("X","g"),"7");

  CNumCompte = CNumCompte.replace(new RegExp("H","g"),"8");
  CNumCompte = CNumCompte.replace(new RegExp("Q","g"),"8");
  CNumCompte = CNumCompte.replace(new RegExp("Y","g"),"8");

  CNumCompte = CNumCompte.replace(new RegExp("I","g"),"9");
  CNumCompte = CNumCompte.replace(new RegExp("R","g"),"9");
  CNumCompte = CNumCompte.replace(new RegExp("Z","g"),"9");
  PN4 = CNumCompte;
  PN4 = PN4 %  97;
  PN4 = PN4 * 100;
  PN3 = PN3 + ( PN4 % 97 );
  PN3 = PN3 % 97;
  if ( PN3==96 )
	PN3=-1;     //  RIB=97 et non 00
  x = 100 + ( 96 - PN3 );
  x = x +"";                  // Forcer la variable en String
  if (x.substr(x.length - 2,2) != CleRIB )
	return " Vaš broj računa je neispravan kada se uporedi sa izračunatim ključem ID Br° banke. ";
  else
	return "";
}

/*
 * CheckAFBAlert(zone)
 * Controle si la chaine de caractere est acceptée en AFB et envoi un message d'erreur et redonne le focus sur la zone
 */
function CheckAFB(ele)
{
  var caractere
  var lstAFB='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "-./)('
  var message ="Karakter ' %1 ' ne može biti prihvaćen u AFB formatu."
  for(i=0; i < ele.length; i++)
  {
	caractere = ele.substr(i,1);
	if ( lstAFB.search( ele.substr(i,1) ) == -1 )
	  return message.replace("%1", caractere) ;
  }
  return "";

}

/*
 * CheckAFB(ele)
 * Controle si la chaine de caractere est acceptée en AFB
 */
function CheckAFBAlert(zone)
{
  var str;
  str = CheckAFB( zone.value);
  if ( str != "" )
  {
	alert( str );
	zone.focus();
	return false;
  }
  else
	return true;
}


function ReadAmount( strAmount )
{
var arr, dec, val, sep;

  if(strAmount=="") return 0;
  dec = val = "";
  arr = strAmount.split(".");
  if ( arr.length == 2 )
	  dec = arr[1];
  sep = "";
  if ( sep == "" ) sep = " ";
  arr = arr[0].split(sep);
  for ( i = 0; i < arr.length; i++ )
	  val += arr[i];
  return parseFloat( val + "." + dec );
}

/*
 * CheckAmount( ele, strMax, obl, strDev, nbDec )
 */
function CheckAmount( ele, strMax, strDev, isNull, isFull, isDec, nbDec, montantNonNulLib )
{
  var arr,mil,nb,sep,hlp;
  hlp ="Format iznosa je sledeći :\n- Separator hiljada je praznina (spejs)\n- Separator decimala je','\n\nDošlo je do sledeće greške:\n";
  if ( strDev == null ) strDev = "";
  if ( isNull == null ) isNull = false;
  if ( isFull == null ) isFull = false;
  if ( isDec == null ) isDec = false;
  if ( nbDec == null ) nbDec = 999;
  
  if ( !isNull && ReadAmount(ele.value) == 0 ) {
    if (montantNonNulLib == null) return "Iznos ne može da bude nula";
    else return montantNonNulLib;
  }

  /*
    Si le separateur de millier est different du point ou de la virgule, et que l'internaute a saisie en separateur de 
    deimal l'un de ces deux caracteres ŕ la place de l'autre, alors on remplace le separateur de decimal par celui attendu 
    par le WEB
  */
  if ( "" != "." && "" != ",")
  {
    if( "." == "," )
      ele.value = ele.value.replace(".",",");
    if( "." == "." )
      ele.value = ele.value.replace(",",".");
  }

  
  for( i=0; i<ele.value.length ; i++ )
  {
    if(isNaN(ele.value.charAt(i)))
    {
      if(ele.value.charAt(i)!="." && ele.value.charAt(i)!="")
      {
        if(i==0)
        {
          if(ele.value.charAt(i)!="-" && ele.value.charAt(i)!="+" )
            return hlp+"Nema numeričkog formata" + "\n\n( " + ele.value + " )";
        }
        else
          return hlp+"Nema numeričkog formata" + "\n\n( " + ele.value + " )";
      }
    }
  }
  

  // Decimales
  arr = ele.value.split(".");
  if ( arr.length > 2 )
	return hlp+"Neispravan separator decimala broja" + "\n\n( " + ele.value + " )";
  if ( arr.length == 2 )
  {
	nb = strDev.substring(3,4);
	if ( nb != "" )
	{
	  if ( nb == 0 ) return "Valuta bez decimala";
	  if ( arr[1].length > nb ) return "Neispravan broj decimala";
	}
	if ( parseInt(arr[1], 10) != arr[1] ) return hlp+"Nema numeričkog formata" + "\n\n( " + ele.value + " )";
  }

  //Controle sur le nombre de digit contenu dans les decimales et la partie entiere
  if(!isFull && parseInt(arr[0], 10)>9999999999999)
    return "";
  if( !isDec && parseInt(arr[1], 10)> nbDec)
    return TextFormat("", String(nbDec).length);

  // Separateur Milliers
  sep = "";
  if ( sep == "" ) sep = " ";
  mil = arr[0].split(sep);
  if ( mil.length > 1)
  {
	for ( i = 0; i < mil.length; i++ )
	{
	  if ( ( i > 0 && mil[i].length != 3 ) || ( i== 0 && mil[i].length > 3  && mil[i].substring(0,1)!="-" && mil[i].substring(0,1)!="+"  ) ) return hlp+"Neispravan separator hiljada\n\n( "+ ele.value + " )";
	  if (mil[i]!="-" && mil[i]!="+" && parseInt(mil[i], 10) != mil[i] ) return hlp+"Nema numeričkog formata" + "\n\n( " + ele.value + " )";
	}
  }
  else
	  if ( parseInt(mil[0], 10) != mil[0] ) return hlp+"Nema numeričkog formata" + "\n\n( " + ele.value + " )";

  // Gestion des bornes
  if ( strMax != "" )
  {
	var fval = ReadAmount( ele.value ), min, max = parseInt( strMax, 10 );

	if ( max == 0 )
	{
	  if ( fval < 0 )
		return "Iznos ne može biti negativan\n\n( " + ele.value +" )";
	  return "";
	}
	if ( max > 0 ) min = 0; else { min = max; max = 0; }
	if ( fval <= min || fval >= max )
	  return "Broj je izvan intervala" + " [" + min + " u " + max + "]\n\n( " + ele.value +" )";
  }
  return "";
}
/*
  CheckAmountAlert( ele, strMax, obl, strDev,isDec )
	Test de la validité d'un montant
	ele.value           la chaine saisie
	strMax              Min/Max de controle
	obl                 autorise les saisies vides
	strDev              La devise avec Nb de decimales (EUR3 par exemple)
	isNull              Permet la saisie d'un montant ŕ zéro 
	isFull              Permet la saisie de 15 digit pour la partie entiere
	isDec               Permet de ne pas tester la longueur de la partie des decimales
	nbDec               Permet de préciser le nombre de décimales
	montantNonNulLib    Libellé spécifique ŕ retourner si le montant n'est pas renseigné
	retourne une chaine, ou un boolean avec Alert()
*/
function CheckAmountAlert( ele, strMax, obl, strDev, isNull, isFull, isDec, nbDec, montantNonNulLib )
{

  var str;
  
  if( ele.value=="" && obl)
    return true;

  if ( nbDec == null ) nbDec = 999;
  
  str = CheckAmount( ele, strMax, strDev, isNull, isFull, isDec, nbDec, montantNonNulLib );
  if ( str != "" )
  {
    alert( str );
    ele.focus();
    return false;
  }
  else
	return true;
}

/*
  CheckNumber( ele, obl )
	Test de la validité d'un nombre
	ele.value   la chaine saisie
	obl         autorise les saisies vides
	
*/
function CheckNumber( ele, obl )
{
  var str;
  if( ele.value=="" && obl)
    return true;
  str = CheckAmount( ele, "","",obl);
  if ( str != "" )
  {
    ele.focus();
    return false;
  }
  else
	return true;
}

/*
 * CheckAmountCouple( eleStart, eleEnd, strMax, strDev, AffMess, nbDec )
 */
function CheckAmountCouple( eleStart, eleEnd, strMax, strDev, AffMess, nbDec )
{
var start, end;
  if ( AffMess == null )
	AffMess = true;

  if ( nbDec == null ) nbDec = 999;
  
	if ( ! CheckAmountAlert( eleStart, strMax, false, "", false, false, false, nbDec ) )
	  return false;
	if ( ! CheckAmountAlert( eleEnd, strMax, false, "", false, false, false, nbDec ) )
	  return false;
  
	if ( ( eleStart.value != "" ) && ( eleEnd.value != "" ) )
	{
	  start = ReadAmount( eleStart.value );
	  end = ReadAmount( eleEnd.value );
	  if ( start > end )
	  {
		if ( AffMess ) alert("Minimalni iznos je veći ili jednak maksimalnom iznosu");
		eleStart.focus();
		return false;
	  }
	}
	return true;
}

/*
  Today( myDate, [myOffset] )
  Retourne la strDate du jour au bon format (ou autre jour si parametre)
  en ajoutant l'offset eventuel.
*/

function Today( myDate, myOffset )
{
  if ( myDate == null )
	myDate = new Date();
  if ( myOffset != null )
	myDate.setDate( myDate.getDate() + myOffset );

  jj = "0"+ myDate.getDate();
  mo = "0"+ (myDate.getMonth()+1);
  an = myDate.getFullYear();


  return jj.substring(jj.length-2,jj.length)+"/"+mo.substring(mo.length-2,mo.length)+"/"+an;

}

function ReadDate( strDate )
{
var jj,mo,an,d2;


  jj = strDate.substring(0,2);
  mo = strDate.substring(3,5);
  an = strDate.substring(6,10);

  d2 = new Date(an, mo-1, jj, 00, 00, 00);
  /*
  d2.setFullYear( an, mo-1, jj );
  d2.setHours(0,0,0,0);
  */
  return d2;
}

function CheckDate( ele, strDelay, obl, nowOk )
{
var jj,mo,an,dele,dmin,dmax,dnow,msgmin,msgmax;

  if ( ele.value == "" )
  {
	if ( obl )
	  return "Unos datuma je obavezan";
	else
	  return "";
  }
  if ( ele.value.length > 10 || ele.value.length < 8 )
	return "Format datuma spajanja podataka je : DD/MM/GGGG" + "\n\n( " + ele.value +" )";


  jj = ele.value.substring(0,2);
  mo = ele.value.substring(3,5);
  an = ele.value.substring(6,10);


  if ( an >=0 && an < 30 )
	an = 2000 + parseInt(an, 10);

  if ( an >= 70 && an <100 )
	an = 1900 + parseInt(an, 10);

  if ( an < 1500 || an > 2500 )
	return "Godina koju ste naznačili nije ispravna" + "\n\n( " + ele.value +" )";

  dele = new Date(an, mo-1, jj, 00, 00, 00);
  /*
  dele.setFullYear( an, mo-1, jj );
  dele.setHours( 0, 0, 0, 0 );
  */

  if ( dele.getMonth() == mo-1 && dele.getDate() == jj && dele.getFullYear() == an )
  {

	if ( strDelay == "" )
	{
	  ele.value = Today( dele );
	  return "";
	}
	dmin = new Date();
	dmax = new Date();
	dnow = new Date();
	dmin.setHours(0,0,0,0);
	dmax.setHours(0,0,0,0);
	dnow.setHours(0,0,0,0);

	if ( parseInt(strDelay, 10) >= 0 )
	{
	  dmax.setDate( dmax.getDate() + parseInt(strDelay, 10) );
	  msgmin = (nowOk)?"Datum mora biti posle datuma ili jednak sledećem datumu":"Datum mora biti posle sledećeg datuma";
	  msgmax = "Datum mora da se nalazi u dozvoljenom periodu" + " (" + strDelay +")";
	}
	else
	{
	  dmin.setDate( dmin.getDate() + parseInt(strDelay, 10) );
	  msgmin = "Datum mora da se nalazi u dozvoljenom periodu" + " (" + strDelay +")";
	  msgmax = (nowOk)?"Datum mora biti pre ili jednak sledećem datumu":"Datum mora biti pre sledećeg datuma";
	}

	if ( !nowOk && dnow.toString() == dele.toString() )
	  return "Datum se odnosi na dan koji nije dozvoljen" + "\n\n( " + ele.value +" )";

	if ( dele >= dmin && dele <= dmax )
	{
	  ele.value = Today( dele );
	  return "";
	}
	if ( dele < dmin )
	  return msgmin + "\n\n( " + ele.value +" )";
	else
	  return msgmax + "\n\n( " + ele.value +" )";
  }
  
  if ( jj > 31 || dele.getDate() !=  jj )
	return "Format datuma spajanja podataka je : DD/MM/GGGG\n\nDan koji  ste naznačili nije ispravan : " + jj + "\n\n( " + ele.value +" )";
  if ( mo > 12 || dele.getMonth() !=  mo -1 )
	return "Format datuma spajanja podataka je : DD/MM/GGGG\n\nMesec koji ste naznačili nije ispravan : " + mo + "\n\n( " + ele.value +" )";
  if ( dele.FullYear() != an )
	return "Format datuma spajanja podataka je : DD/MM/GGGG\n\nGodina koju ste naznačili nije ispravna :" + an + "\n\n( " + ele.value +" )";
}


/*
  CheckDateAlert( ele, strDelay, obl )
  Test de la validité d'une date
  ele.value la chaine saisie
  strDelay delai max autorisé
  obl autorise les saisies vides
  retourne une chaine, ou un boolean avec Alert()
*/
function CheckDateAlert( ele, strDelay, obl, nowOk )
{
var str;

  if ( nowOk == null ) nowOk = true;
  str = CheckDate( ele, strDelay, obl, nowOk );
  if ( str != "" )
  {
	alert( str );
	ele.focus();
	return false;
  }
  else
	return true;
}

function CheckDateCouple( eleStart, eleEnd, strDelay, nowOk, mdate )
{

  if ( ! CheckDateAlert( eleStart, strDelay, false, nowOk ) )
	return false;
  if ( ! CheckDateAlert( eleEnd, strDelay, false, nowOk ) )
	return false;

  if ( ( eleStart.value != "") && ( eleEnd.value != "") )
  {
	if( ReadDate( eleStart.value ) > ReadDate( eleEnd.value ) )
	  if ((mdate)&&(mdate!=""))
	  { alert(mdate); eleStart.focus(); return false;}
	else
	  { alert("Početni datum za pretragu transakcija je veći od krajnjeg datuma"); eleStart.focus(); return false;}
  }
  return true;
}

/*
 * CheckIBAN(NumCompte)
 * Verifier la saisie d'un compte IBAN en recalculant la clé IBAN.
*/
function CheckIBAN(NumCompte)
{
  var again = true;
  var Crest = "";

  NumCompte = NumCompte.toUpperCase();
  NumCompte = NumCompte.substr(4,NumCompte.length-4) + NumCompte.substr(0,4);
  NumCompte = TranslateAlpha2Num(NumCompte);

  Crest = NumCompte;
  CResult = "";

  while( again )
  {
	if ( Crest.length <= 7 )
	{
	  Cpart = Crest;
	  again = false;
	}
	else
	{
	  Cpart = Crest.substr(0,7);
	  Crest = Crest.substr(7,Crest.length-7 );
	}

	Cpart = CResult + Cpart;
	Npart = Cpart * 1;
	NResult = Npart % 97;
	CResult = NResult + "";
  }
  return NResult == 1;
}

/*
 * KeyIBAN(NumCompte,CodePays)
 * Calcul la clé IBAN ŕ partir du BBAN et du code pays du BBAN.
 */
function KeyIBAN(NumCompte, CodePays)
{
  var again = true;
  var Crest = "";

  NumCompte = TranslateAlpha2Num( NumCompte.toUpperCase() + CodePays.toUpperCase() + '00' );

  Crest = NumCompte;
  CResult = "";

  while( again )
  {
	if ( Crest.length <= 7 )
	{
	  Cpart  = Crest;
	  again = false;
	}
	else
	{
	  Cpart = Crest.substr(0,7);
	  Crest = Crest.substr(7,Crest.length-7 );
	}

	Cpart = CResult + Cpart;
	Npart = Cpart * 1;
	NResult = Npart % 97;
	CResult = NResult +"";
  }

  NResult = 98 - NResult;

  if ( NResult < 10 )
	CResult = "0"+ NResult;
  else
	CResult = NResult + "";

  return CResult;
}

function TranslateAlpha2Num(NumCompte)
{
  NumCompte = NumCompte.replace( new RegExp("A","g"),"10");
  NumCompte = NumCompte.replace( new RegExp("B","g"),"11");
  NumCompte = NumCompte.replace( new RegExp("C","g"),"12");
  NumCompte = NumCompte.replace( new RegExp("D","g"),"13");
  NumCompte = NumCompte.replace( new RegExp("E","g"),"14");
  NumCompte = NumCompte.replace( new RegExp("F","g"),"15");
  NumCompte = NumCompte.replace( new RegExp("G","g"),"16");
  NumCompte = NumCompte.replace( new RegExp("H","g"),"17");
  NumCompte = NumCompte.replace( new RegExp("I","g"),"18");
  NumCompte = NumCompte.replace( new RegExp("J","g"),"19");
  NumCompte = NumCompte.replace( new RegExp("K","g"),"20");
  NumCompte = NumCompte.replace( new RegExp("L","g"),"21");
  NumCompte = NumCompte.replace( new RegExp("M","g"),"22");
  NumCompte = NumCompte.replace( new RegExp("N","g"),"23");
  NumCompte = NumCompte.replace( new RegExp("O","g"),"24");
  NumCompte = NumCompte.replace( new RegExp("P","g"),"25");
  NumCompte = NumCompte.replace( new RegExp("Q","g"),"26");
  NumCompte = NumCompte.replace( new RegExp("R","g"),"27");
  NumCompte = NumCompte.replace( new RegExp("S","g"),"28");
  NumCompte = NumCompte.replace( new RegExp("T","g"),"29");
  NumCompte = NumCompte.replace( new RegExp("U","g"),"30");
  NumCompte = NumCompte.replace( new RegExp("V","g"),"31");
  NumCompte = NumCompte.replace( new RegExp("W","g"),"32");
  NumCompte = NumCompte.replace( new RegExp("X","g"),"33");
  NumCompte = NumCompte.replace( new RegExp("Y","g"),"34");
  NumCompte = NumCompte.replace( new RegExp("Z","g"),"35");
  return NumCompte;
}



function CheckInt( ele, strInt, obl )
{
var min,max,val = ele.value;

  if ( val == "" )
  {
	if ( obl )
	  return "Obavezna je cela vrednost";
	else
	  return "";
  }

  //readamount permet de supprimer les separateurs eventuels de milliers
  val = ReadAmount( val )
  ival = parseInt(val, 10);
  if ( ival != val )
	return "Neispravan broj" + "\n\n( " + val +" )";

  if ( strInt != "" )
  {
	max = parseInt(strInt, 10);
	if ( max == 0 )
	{
	  if ( ival < 0 )
		return "Broj ne može biti negativan\n\n( " + ele.value +" )";
	  return "";
	}
	if ( max > 0 )
	  min = 0;
	else
	{
	  min = max;
	  max = 0;
	}
	if ( ival <= min || ival >= max )
	  return "Broj je izvan intervala" + " [" + (min+1) + " u " + (max-1) + "]\n\n( " + val +" )";
  }
  return "";
}

/*
  CheckIntAlert( ele, strInt, obl )
  Test de la validité d'un entier
  ele.value la chaine saisie
  strInt valeur max autorisé
  obl autorise les saisies vides
  retourne une chaine, ou un boolean avec Alert()
*/
function CheckIntAlert( ele, strInt, obl )
{
var str;

  str = CheckInt( ele, strInt, obl );
  if ( str != "" )
  {
	alert( str );
	ele.focus();
	return false;
  }
  else
	return true;
}


function lvtrim( str )
{
var ret, found;

  ret = "";
  found = false;
  for ( var i = 0; i< str.length; i++ )
  {
	var c = str.charAt(i);
	if ( !found && ( c == ' ' || c =='\t' || c == '\n' || c == '\r' ) )
	  continue;
	found = true;
	ret += c;
  }
  return ret;
}

function rvtrim( str )
{
  var ret, found;

  ret = "";
  found = false;
  for ( var i = str.length - 1; i >= 0; i-- )
  {
	var c = str.charAt(i);
	if ( !found && ( c == ' ' || c =='\t' || c == '\n' || c == '\r' ) )
	  continue;
	found = true;
	ret = c + ret;
  }
  return ret;
}

/*
 * vtrim(str)
 * trim directement sur une Value (ie une chaine)
 */
function vtrim( str ) { return lvtrim(rvtrim( str )); }

function ltrim( ele )
{
  ele.value = lvtrim( ele.value );
  return ele.value;
}

function rtrim( ele )
{
  ele.value = rvtrim( ele.value );
  return ele.value;
}

/*
 * trim( ele )
 * trim sur un element (i.e; un objet)
 */
function trim( ele )
{
  if(ele)
  {
    ltrim(ele);
    return rtrim(ele);
  }else return "";
}

function CheckStr( ele, strXXX, obl )
{
  if ( ele.value == "" )
  {
	if ( obl )
	  return "Ovo polje mora biti popunjeno";
	else
	  return "";
  }
  return "";
}

function CheckStrAlert( ele, strXXX, obl )
{
var str;

  ltrim( ele );
  str = CheckStr( ele, strXXX, obl );
  if ( str != "" )
  {
	alert( str );
	ele.focus();
	return false;
  }
  else
	return true;
}

function TextFormat(text,val1,val2,val3,val4,val5,val6,val7,val8,val9,val10)
{
  var i, message = text
  for ( i = arguments.length-1; i>0; i-- )
  {
	if(arguments[i]!=null)
	  message = message.replace("%"+i , arguments[i] );
  }
  return message
}

function TextTranslate( ele, strin, strout )
{
  var v = ele.value;
  var s1, s2;
  for ( var i = 0; i < strin.length; i++ )
  {
	s1 = String.fromCharCode(strin.charCodeAt( i ));
	s2 = String.fromCharCode(strout.charCodeAt( i ));
	while ( v.indexOf( s1 ) != -1 )
	  v = v.replace( s1,s2 );
  }
  ele.value = v;
}

/*
 * pad_right(val,len)
 * Complete une chaine ŕ droite avec des espaces
 */
function pad_right( val, len )
{
  var str = "";

  for ( var i = 1; i <= len; i++ )
	str = str + " ";
  return (val + str).substring(0,len);
}

// strDelai non gere dans cette version
function CheckTime( ele, strDelai, obl )
{
var hh, pp, mm;

  hh = ele.value.substring(0,2);
  pp = ele.value.substring(2,3);
  mm = ele.value.substring(3,5);

  if ( ele.value == "" )
  {
	if ( obl )
	  return "Unos vremena je obavezan\nVreme mora da bude u formatu ČČ:MM";
	else
	  return "";
  }
  if ( pp != ":" )
	return "Vreme mora da bude u formatu ČČ:MM" + "\n\n( " + ele.value +" )";

  if ( hh < 0 || hh > 23 || hh == "  " )
	return "Čas mora biti između 00 i 23" + "\n\n( " + ele.value +" )";
  if ( mm < 0 || mm > 59 || mm == "  " )
	return "Cifra minuta mora biti između 00 i 59" + "\n\n( " + ele.value +" )";

  return "";
}

/*
  CheckTimeAlert( ele, strDelay, obl )
  Test de la validité d'une heure
  ele.value la chaine saisie
  strDelai delai max autorisé
  obl autorise les saisies vides
  retourne une chaine, ou un boolean avec Alert()
*/
function CheckTimeAlert( ele, strDelai, obl )
{
var str;

  str = CheckTime( ele, strDelai, obl );
  if ( str != "" )
  {
	alert( str );
	ele.focus();
	return false;
  }
  else
	return true;
}

/*
  CheckEmail( adresse )
  Test la validité d'une adresse email
*/
function CheckEmail( adresse )
{
  if(adresse.indexOf(" ",0)>0)
    return false;

  arr = adresse.split("@");
  if( arr.length != 2 )
    return false;
  arr = adresse.split(".");
  if( arr.length < 2 )
    return false;
    return true;
}


/*
 * remplacement de la fonctionnalité alt par AffBulle, pour fonctionnement IE,Mozilla
 */
var posX=0;
posY=0;
function getMousePos(aEvent)
{
  var myEvent = aEvent ? aEvent : window.event;
  if (document.all)
  {
	posX=myEvent.clientX+document.body.scrollLeft+20;
	posY=myEvent.clientY+document.body.scrollTop;
  }
  else
  {
	posX=aEvent.pageX+20;
	posY=aEvent.pageY;
  }
}

document.write("<div id='bubble' style='position:absolute;visibility:hidden;'></div>");

function AffBulle(texte,aEvent)
{
  getMousePos(aEvent);
  document.getElementById("bubble").innerHTML='<table border="1" cellpadding="0" cellspacing="0"><tr><td id="bub"><table border="0"><tr><td id="bub">'+texte+'</td></tr></table></td></tr></table>';

  if( document.body.clientWidth+document.body.scrollLeft < posX + document.getElementById("bubble").scrollWidth )
    document.getElementById("bubble").style.left       = document.body.clientWidth-document.getElementById("bubble").scrollWidth+document.body.scrollLeft;
  else
    document.getElementById("bubble").style.left       = posX;
  if( document.body.clientHeight+document.body.scrollTop < posY + document.getElementById("bubble").scrollHeight )
      document.getElementById("bubble").style.top        = document.body.clientHeight-document.getElementById("bubble").scrollHeight+document.body.scrollTop;
  else
    document.getElementById("bubble").style.top        = posY;

  document.getElementById("bubble").style.visibility = "visible";
}

function HideBulle()
{
  document.getElementById("bubble").style.visibility="hidden";
}

function random() { return Math.floor(Math.random()*10); }

/*
 * Affichage du tableau de saisie du code ŕ la souris
 */
function gen_clavier(formulaire,zone)
{
	var tab = new Array(0,1,2,3,4,5,6,7,8,9);
	var index1, index2 , val;
	for (i=0 ; i<50 ; i++)
	{
		index1 = random();
		index2 = random();
		val = tab[index1];
		tab[index1] = tab[index2];
		tab[index2] = val;
	}
	
	document.write('<table><tr><td>');
	for (i=0 ; i<10 ; i=i+2)
		document.write('<input type="button" class="buttoncode" value="'+tab[i]+'" onclick="makepwd(\''+formulaire+'\',\''+zone+'\','+tab[i]+')">'); 
	document.write("</td></tr><tr><td>");
	for (i=1 ; i<10 ; i=i+2)
		document.write('<input type="button" class="buttoncode" value="'+tab[i]+'" onclick="makepwd(\''+formulaire+'\',\''+zone+'\','+tab[i]+')">'); 
	document.write('</td></tr><tr><td><table><tr>');
	document.write('<td><input type="password" readonly="readonly" size="8" maxlength="8" name="'+zone+'" tabindex="-1" ></td>');
	document.write('<td valign="center"><table><tr><td><a href="#" onclick="clearpwd(\''+formulaire+'\',\''+zone+'\');" title="" ><img src="pwdefbtn.gif" border="0"></a></td></tr></table></td>');
	document.write('</tr></table></td></tr></table>');
}

function makepwd(formulaire,zone,val)
{
	document[formulaire][zone].value = document[formulaire][zone].value + val;
}

function clearpwd(formulaire, zone)
{
	document[formulaire][zone].value = "";
}

/*
  Formate le montant passer en parametre, avec un nombre de decimales definies
*/
function valdec_form(ele, val, nbdec)
{
  var arr, dec, ent;
  dec="";
  if(nbdec==null)
    nbdec=0;
  arr = val.split(".");
  if ( arr.length == 2 )
    dec = arr[1];
  ent = arr[0];
  for( i=dec.length; i<nbdec; i++)
  {
    dec = dec + "0";
  }
  ele.value= ent+"."+dec;
}
/*
Verifie le nombre maximal de decimales saisies
*/
function check_nbdec(ele, nbdec)
{
  var arr,dec;
  dec="";
  arr = ele.value.split(".");
  if ( arr.length > 2 )
  {  alert(hlp+"Neispravan separator decimala broja" + "\n\n( " + ele.value + " )");
    return false;
  }
  if ( arr.length == 2 )
  {
    dec=arr[1];
    if(dec.length > nbdec)
      alert(TextFormat("",nbdec));
  }
}

/*
  formatte une chaine représentant un valeur numérique non formatée
*/
function FormatMonnaie(S, isDec)
{
	if (S=="NaN") return S;
	if(isDec==null)
	  isDec=true;
	var i, j, N;
	var S1="";
	var S2="";
	var sep_decimal=".";
	var sep_millers="";
	if (sep_millers=="") sep_millers=" ";
	
	N=S.indexOf(".");
	if (N==-1) S1=S; else S1=S.substr(0,N);
	S2=""; j=0;
	for ( i=S1.length-1; i>=0; i-- )
	   {
	   	S2=S1.charAt(i) + S2;
	   	j++;
	   	if ((j==3)&&(i>0)) {S2=sep_millers + S2; j=0;}
	   }
	if (S2=="") S2="0";
	if (N==-1)
	  if(isDec)
	    S1="00";
	  else 
	    S1="";
	else 
	  S1=S.substr(N+1,S.length -(N+1));
	if(isDec)
	{
	  switch(S1.length)
	  {
		case 0 : S1="00";
		         break;
		case 1 : S1=S1 + "0";
		         break;
	  }
	}
	if(S1!="")
	  S=S2 + sep_decimal + S1;
	else
	  S=S2;
	
	while ((S.length>0)&&(S.charAt(0)==' ')) S=S.substr(1,S.length-1);
	while ((S.length>0)&&(S.charAt(S.length-1)==' ')) S=S.substr(0,S.length-1);
	return S;
}

function ChargerCookie(Nom)
{
	var Valeurs;
	var Valeur;
	var Nom_Item;
	var Valeur_Item;
	var i;
	var j;
	var OK;
				
	Valeurs = document.cookie.split("; ");
	i = 0;
	while (i != Valeurs.length)
		{	
			Valeur = Valeurs[i];
			Nom_Item = Valeur.split("=")[0];
			Valeur_Item = Valeur.split("=")[1];
			if (Nom_Item == Nom) 
				{
					j=0;
					OK = 1;
					while (j != Valeur.length)
						{
							if (Valeur.charAt(j) == '=') 
								{if (j != Valeur.length) OK = 0;}
							j = j+1;
						}
					if (OK == 0) 
						{
							return Valeur_Item;
						}
				}
			i = i+1;	
		}
	return '';
}

function FormatChecked(object)
{
	if (object.checked == true)
		return 'O';
	else
		return 'N';
}


//Création de l'objet XMLHttpRequest en fonction du navigateur
function createXmlHttpRequest(){
  var req = null;
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
        req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            req = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
    }

  }
  req.onreadystatechange = function(){
	if (req.readyState == 4){
	  if (req.status == 200){
		//Cette fonction devra etre défini dans chaque page lors de l'appel de la requete
		ReadXmlHttpRequest(req);
	  }
	  else{
		alert("Problem: " + req.statusText);
	  }
	}
  }
  return req;
}

//supprime les zero ŕ droite de la partie décimale, et ecrit dans la page
function supZero(val)
{
  var arr, dec, len, NbZero;
  NbZero=0;
  dec = "";

  arr = val.split(".");
  if ( arr.length == 2 )
  {
    dec = arr[1]+"";
    len=dec.length;
    for( i=len; i>0; i--)
    {
      if(dec.substring(len-NbZero, len-(NbZero+1))=="0")
        NbZero=NbZero+1;
      else
        break;
    }
    if(NbZero>0)
      dec=dec.substring(0,len-NbZero);
     if(dec!="")
       val=arr[0]+"."+dec;
     else
       val=arr[0];
  }
  document.write(val);
}

function checkdigit(str){
  if(isNaN(str) || str.length != 10)
    return false;
  var t = 10;
  var c = ""
  var val=0
  for (var i = 0; i < str.length -1; ++i)
  {
    c = parseInt(str.substr(i,1),10);
    val = (t+c)%10;
    if(val == 0)
      t = (2 * 10) % 11;
    else
      t = (2 * val) % 11;
  }
  return (((t + parseInt(str.substr(str.length -1,1),10)) % 10) == 1);
}


function NbAccChange(compte,codebnq)
{

  
    if (!checkdigit(compte))
    {
      alert("");
      return false;
    }
  
  return true;
}

/* Sortie immediate vers un autre URL*/
function logoutda(mess)
{
    var loc_mess=mess.replace("<br>","\n");
	loc_mess=loc_mess.replace("<br/>","\n");
	alert(loc_mess);
    window.open("dciweb.htm?p0=logoutda.tht&p1=idehom.html&p2=SECU&t=x","_top");
}

/* Remplace toutes les occurrences se trouvant dans une chaine *
 * source = ODVJETNIK STIPE "CVITANOVIĆ"                       *
 * stringToFind = \"                                           *
 * stringReplaceWith = ^                                       *
 * => temp = ODVJETNIK STIPE ^CVITANOVIĆ^                      */
function replaceAll(source, stringToFind, stringReplaceWith){
  var temp = source;
  var index = temp.indexOf(stringToFind);
  
  while(index != -1){
    temp = temp.replace(stringToFind,stringReplaceWith);
    index = temp.indexOf(stringToFind);
  }
  
  return temp;
}

/* Remplace toutes les occurrences se trouvant dans une chaine ŕ partir de la liste passée en paramčtre *
 * source            = ODVJETNIK STIPE "CVITANOVIĆ"                                                     *
 * listOfReplacement = \"|\'|Ć|TAN                                                                      *
 * separator         = |                                                                                *
 * replaceWith       = ^                                                                                *
 * => tempSource = ODVJETNIK STIPE ^CVI^OVI^^                                                           */
function caractersToReplaceIntoString(source, listOfReplacement, separator, replaceWith){
  var tempListOfReplacement = "";
  var tempSeparator = "";
  var tempReplaceWith = "";
  var indexStringToReplace = "";
  var theString = "";
  var tempSource = source;
  
  // Valeurs par défaut si non renseigné
  if (listOfReplacement == "") { tempListOfReplacement = "\"|\'"; } else { tempListOfReplacement = listOfReplacement; }
  if (separator == "") { tempSeparator = "|"; } else { tempSeparator = separator; }
  if (replaceWith == "") { tempReplaceWith = " "; } else { tempReplaceWith = replaceWith; }
    
  indexStringToReplace = tempListOfReplacement.indexOf(tempSeparator);
  
  while(indexStringToReplace != -1){
    theString = tempListOfReplacement.substring(0, indexStringToReplace);
    tempListOfReplacement = tempListOfReplacement.substring(indexStringToReplace + 1, tempListOfReplacement.length);
    indexStringToReplace = tempListOfReplacement.indexOf(tempSeparator);
    
    tempSource = replaceAll(tempSource, theString, tempReplaceWith);
  }
  
  if (tempListOfReplacement != "" && tempSource != source) {
    tempSource = replaceAll(tempSource, tempListOfReplacement, tempReplaceWith);
  }
  
  return tempSource;
}


function changeliblayer(layerIE,layer,message,style)
{
  if (document.layers)
  {
    document.layers[layerIE].layers[0].document.open();
    if(style != null)
      document.layers[layerIE].layers[0].document.className = style;
    document.layers[layerIE].layers[0].document.write(message);
    document.layers[layerIE].layers[0].document.close();
  }
  else
  {
    /* IE, Mozilla*/
    if( document.getElementById)
    {
      if(style != null)
        document.getElementById(layer).className = style;
      document.getElementById(layer).innerHTML = message;
    }
  }
}

/*
* test qu'une chaine est entierement composé de numérique
* En complement ŕ isNaN qui laisse passé le separateur de décimale
*/
function ChaineNumerique(Chaine){
 var modele=/[,\\.]+/g;
    if(isNaN(Chaine) || modele.test(Chaine))
		return false;
	else
		return true;
}

