// faz o somatório dos campos com o nome começado pelo nomestr com um numerador
// a variar entre iniciostr e fim str
// Todos os parametros são strings
function somatorio(nomestr,replace,iniciostr,fimstr)
        {
                //alert('('+nomestr+','+replace+','+iniciostr+','+fimstr+')');
                var total = 0;
                var fim;
                var inicio;
                var val;
                var rregexp;
                var str = new String(nomestr);
                var str2;

                try{eval('rregexp = /' + replace + '/g ;');}
                catch(e){rregexp = '';}

                try{eval('fim = ' + fimstr + ';');}
                catch(e){fim = 0;}

                try{eval('inicio = ' + iniciostr + ';');}
                catch(e){        inicio = 0;}

                for(i=inicio;i<=fim;i++)
                                {
                                      str2 = str.replace(rregexp,''+i+'');
                                      try{eval('val = ' + str2 +'.value;');}
                                      catch(e){val = 0;}
                                      val = parseFloat(val);
                                      if(isNaN(val))val=0;
                                      total += val;
                                }

                return total;
        }


/// funções para trabalhar com dois selects de multiplas linhas

// retira a linha selecionada numa list box e coloca na outra.
// org: listbox de onde retirar a linha
// des: listbox onde colocar a linha
function troca_lista(org,des)
        {
                var i;
                var l;
                var color;
                l = org.length;
                if(org.selectedIndex!=-1){
                        for(i=0;i<l;i++){
                                if(org.options[i].selected&&org.options[i].value!=''){
                                        color = org.options[i].style.color;
                                        des.options[des.length]= new Option(org.options[i].text,org.options[i].value,false,false);
                                        des.options[(des.length-1)].style.color = color;
                                        }
                                }
                        for(i=(l-1);i>=0;i--)
                                {if(org.options[i].selected&&org.options[i].value!=''){org.options[i]=null;}}
                        ordenar(des.options);
                }
        }

// ordena um uma list box por ordem alfabética
// arr: array com as opções da listbox
// Exemplo:: ordenar(listbox1.options);
function ordenar(arr)
        {
                var l = arr.length;
                var i,j,jmin_idx;
                var aux;
                var aux_color;
                for(j=0;j<l-1;j++){
                                min_idx = j;
                                for(i=j;i<l;i++){if(arr[i].text<arr[min_idx].text)min_idx=i;}
                                if(min_idx!=j){
                                        aux = new Option(arr[min_idx].text,arr[min_idx].value);
                                        aux_color = arr[min_idx].style.color;
                                        arr[min_idx]= new Option(arr[j].text,arr[j].value);
                                        arr[min_idx].style.color=arr[j].style.color;
                                        arr[j] = new Option(aux.text,aux.value,false,false);
                                        arr[j].style.color=aux_color;
                                        aux = null;
                                        }
                        }
        }
/// FIM funções para trabalhar com dois selects de multiplas linhas

// funções para trabalhar com os emails
function valida_email(email)
        {
                var str
                str = new String(email)
                if(str.indexOf('@', 0) == -1) return false
                else if(str.charAt(str.indexOf('@', 0)+1)=="") return false
                return true
        }

/// funcões para datas
function comparaDatas(data1,data2)
                {
                                var dat1;
                                var dat2;
                                //alert(data1+' '+data2);
                                dat1 = get_data(data1);
                                dat2 = get_data(data2);

                                if(dat1.getFullYear()<dat2.getFullYear()) return -1
                                if(dat1.getFullYear()>dat2.getFullYear()) return 1
                                if(dat1.getFullYear()==dat2.getFullYear())
                                        {
                                                if((dat1.getMonth()+1)<(dat2.getMonth()+1)) return -1
                                                if((dat1.getMonth()+1)>(dat2.getMonth()+1)) return 1
                                                if((dat1.getMonth()+1)==(dat2.getMonth()+1))
                                                        {
                                                                if(dat1.getDate()<dat2.getDate()) return -1
                                                                if(dat1.getDate()>dat2.getDate()) return 1
                                                                if(dat1.getDate()==dat2.getDate()) return 0
                                                        }
                                        }
                                // data1<data2 == -1
                                // data1==data2 == 0
                                // data1>data2 == 1
                }

							
function test_date(s)
        {
                var str
                var arrstr
                str = new String(s)
                arrstr = new Array()
                arrstr = str.split("-")
                if(arrstr[0]==str) arrstr = str.split("/")
                else if(arrstr[0]==str) arrstr = str.split("\\")
                else if(arrstr[0]==str) arrstr = str.split(" ")
                return valida_date(Number(arrstr[2]),Number(arrstr[1]),Number(arrstr[0]))
        }

function test_date_reverse(s)
        {
                var str,str2
                var arrstr,arrstr2
                str = new String(s)
                arrstr = new Array()
                arrstr2 = new Array()
                arrstr = str.split("-")
                if(arrstr[0]==str) arrstr = str.split("/")
                else if(arrstr[0]==str) arrstr = str.split("\\")
                else if(arrstr[0]==str) arrstr = str.split(" ")
                str2 = new String(arrstr[2]);
                arrstr2 = str2.split(" ");
                return valida_date(Number(arrstr[0]),Number(arrstr[1]),Number(arrstr2[0]))
        }

function valida_date(ano,mes,dia)
                {
                        if(isNaN(ano) || isNaN(mes) || isNaN(dia) )
                                { return false }

                        if( (dia<1) || (mes<1) || (mes>12) || (ano<0) )
                                { return false }

                        if(mes==2)
                                {
                                        if(ano%4==0)
                                                {
                                                        if(dia>29)
                                                                return false
                                                        else
                                                                return true
                                                }
                                        else
                                                {
                                                        if(dia>28)
                                                                return false
                                                        else
                                                                return true
                                                }

                                }

                        if((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)||(mes==10)||(mes==12))
                                {
                                  if(dia>31)
                                        return false
                                  else
                                          return true
                                }

                        if(dia>30)
                                return false
                        else
                                return true
                }


function _strip_whitespace(s)
        {
                var i = 0;
                var espacos = " \t\n\r";

                // elimina espaços iniciais
            while (i < s.length && _char_in_string(s.charAt(i), espacos)){i++;}

                s=s.substring(i, s.length);
                var total = s.length;
                var j = s.length;

                // elimina espaços finais
                while (j > 0 && _char_in_string_fim(s.charAt(j), espacos)){j--;}

                j++;

                return s.substring(0, j);
        }

function _radio_as_selection(inpt)
	{
		var i;
		
		if(inpt.length)
			{
				for (i = 0; i < inpt.length; i++) 
					{
						if(inpt[i].checked)
							{
								return true;
							}
					}
				return false;
			}
		else
			{
				if(inpt.checked)
					{
						return true;
					}
				return false;
			}
	}

function _char_in_string(c, s)
        {
                for (i = 0; i < s.length; i++) {
                        if (s.charAt(i) == c) return true;
                }
                return false;
        }

function _char_in_string_fim(c, s)
        {
                for (i = s.length; i >= 0; i--){
                        if (s.charAt(i) == c) return true;
                }
                return false;
        }