//  utils.js - Funcoes utilitarias de uso geral
//  Autor:  Luciano M. Ribas - E-Publishing Services
//  Ultima alteracao: 14/03/2001
document.domain = "hsbc.com.br";
function popup(url,janela,atributos)
{ var w= window.open(url,janela,removeStr(atributos," ")); }

function popupPrint(url,width,height)
{
	var w, h;
	if( arguments.length < 2)
	{
		w= 640  ; h= 480;
	}else{
		w= width; h= height;
	}
	popup(url,'PrintWind'+random(1,9999),'left=0,top=0,width='+w+',height='+h+',directories=no,location=no,menubar=no,resizable=no,scrollbars=yes,status=no');
}

function popupPrintAuto(arg1,arg2,arg3, arg4)
{
	var print_logo, width, height, css;
	var nargs= arguments.length;

	if( arg1)
	{
		if( isNaN(parseInt(arg1,10)) )  // is not a number?
		{
			print_logo= arg1;
			width= arg2;
			if( arg3) height= arg3;
			if( arg4) css= arg4;
		}else{
			width= arg1;
			if( arg2) height= arg2;
			if( arg3) css= arg3;
		}
	}
	var b= new Browser();
	if( b.isIE())
	{
		var pagePrintIE= "/ITE/common/print_ie/printIE.html?rand="+random(1,9999);
		if( print_logo)
			pagePrintIE= pagePrintIE+ "&print_logo="+ print_logo;
		if( css)
			pagePrintIE= pagePrintIE+ "&css="+ css;
		var call= "popupPrint(\""+ pagePrintIE + "\""+
		        (arguments.length > 0?","+width+","+height:"") + ")";
		eval(call);
	}else{
		var href=String(document.location.href);
		/* Codigo especifico para desenvolvimento via Transform */
		var i;
		var pesq= "/ITE/servlets/Transform?xml=";
		if( (i=href.indexOf(pesq))!= -1)
		{
			var iXsl= href.indexOf("&xsl=");
			var change= href.substring(i+pesq.length,iXsl); 
			href= changeStr(href,change,change+"_print");	
			href= changeStr(href,".xml_print","_print.xml");
		}
		href+= (href.indexOf("?")== -1)?"?media=print":"&media=print";
		var call= "popupPrint(\"" +href+ "\"" +  
		          (arguments.length > 0?","+width+","+height:"") + ")";
		eval(call);
	}
}

function random(r1, r2) {
  if (r2 > r1) return (Math.round(Math.random()*(r2-r1))+r1);
  else return (Math.round(Math.random()*(r1-r2))+r2);
}

function trim(str){ return String(str).replace(/^\s+/,"").replace(/\s+$/,""); }

function autoSkip(field, orientation)
{
	var indCampo= -1;
	var form= field.form;
	// Obtendo posicao do campo no formulario
	for(i=0; i < form.elements.length; i++)
	{
		if (field == form.elements[i] ) 
		{
			indCampo= i; break;
		}
	}
	focusCampByPos(form, indCampo, orientation);
}

function autoFocus(form)
{
	var formulario= arguments.length==0?document.forms[0]:form;
	focusCampByPos(formulario, -1);
}

function focusCampByPos(form, indCampo, orientation)
{	
	var orient=  (orientation?orientation:"down");
	var indNext= (orient == "down"?1:-1);
	// Caso seja o ultimo componente nao foca em ninguem.
   if( ( typeof form.elements[indCampo+indNext]) == "undefined")
   {
		if( indCampo!= -1) form.elements[indCampo].blur();
      return;
   }
	//Procurando proximo campo para setar foco.
   for(i=indCampo+indNext; i < form.elements.length; i=i+indNext)
   {
      tipo= form.elements[i].type;
      if((tipo=='text' || tipo=='password' || tipo=='select-one') && !form.elements[i].disabled)
      {
         form.elements[i].focus();
			return;
      }
   }
	// Caso nao consiga focar em ninguem, sai do campo...
	form.elements[indCampo].blur();
}

function isNumeric( value)
{
	var reNumeric= new RegExp("^[0-9]+$");
	return reNumeric.test(value);
}

function isTextNumber(value)
{
	var re= /^[0-9a-zA-ZáéíóúçãõâêôàÁÉÍÓÚÇÃÕÂÊÔÀ]+$/;
	return re.test(value);
}

function isAlfaNumeric(value)
{
	var re= /^[0-9a-zA-Z]+$/;
	return re.test(value);
}

function isAlfa(value)
{
	var re= /^[a-zA-ZáéíóúçãõâêôàÁÉÍÓÚÇÃÕÂÊÔÀ]+$/;
	return re.test(String(value));
}

function invertStr(str)
{
	var temp="";
	for (var i=0; i<str.length; i++)
		temp=str.charAt(i)+temp
	return temp;
}

function removeStr(source, arg)
{
	var ind, tam, values;
	var dst= String(source);
	if( !arg || arg.length == 0) return dst;
	if( typeof arg == "string")
		values= new Array(arg);
	else
		values= arg;
	for(var i=0; i< values.length; i++)
	{
		tam= String(values[i]).length;
		while( (ind= dst.indexOf(values[i]))!= -1)
			dst= dst.substring(0,ind) + dst.substring(ind + tam);
	}
	return dst;
}

function isFloatNumber(number)
{
	var re= /^\d+(,\d+|\d*)$/;
	return re.test(number);
}

function repeatStr(source, str, size, direction)
{
	var ret= String(source);
	if( !direction) direction= "left";
	while(ret.length < size)
	{
		if( String(direction).toLowerCase() == "right")
			ret+= str;
		else
			ret= str + ret;
	}
	return ret;
}

function changeStr(source, strOrig, strDest)
{
	var ind;
	var lastind=0;
	var lengthOrig= String(strOrig).length;
	var dst= new String("");
	while( (ind= source.indexOf(strOrig,lastind))!= -1)
	{
		dst+= (source.substring(lastind,ind) + strDest);
		lastind= ind+lengthOrig;
	}
	dst+= source.substring(lastind);
	return dst;
}

function justNumbersStr(str)
{ return String(str).replace(/\D*/g,""); }

function onlySameNumber(str)
{
	if( !isNumeric(str)) return false;
	var re= new RegExp("^("+str.charAt(0)+")(\\1)*$");
	return re.test(str);
}


