function ValidarCaixaTexto(campo) {
	if (arguments.length == 2)
		minCaracter = arguments[1];
	else
		minCaracter = "1";
	if ( campo.value.length < minCaracter || campo.value == " " || campo.value == "  " || campo.value == "   " || campo.value == "   ") {
		alert("Favor, preencha o campo "+ campo.alt +" corretamente !");
		campo.focus();
		return false;
	}
	return true;
}  

function mascaraCep(objeto){
	if (objeto.value.indexOf("-") == -1 && objeto.value.length > 5){ objeto.value = ""; }
	if (objeto.value.length == 5){
		objeto.value += "-";
	}
}
function mascaraTelefone(objeto){
	if (objeto.value.indexOf("-") == -1 && objeto.value.length > 5){ objeto.value = ""; }
	if (objeto.value.length == 2){
		objeto.value +="-";
	}
}


function ValidarCaixaSelect(campo) {
	if (!campo.selectedIndex) {
		alert("Favor, selecione um item do campo "+ campo.alt +" !");
		campo.focus();
		return false;
	}
	return true;
}


function RemoverItens(mObj) {
	while ( mObj.length > 1) mObj.remove(1);
}
  
function AdicionarItem(mValue, mItem, mObj, mDocument) {
	var oOption   = mDocument.createElement("OPTION");	
	oOption.text  = mItem;
	oOption.value = mValue;
	mObj.add(oOption);		
}  

  
function Matriz(n) { 
	this.length = n;
	for (var contador=1 ; contador <=n ; contador++) { 
		this[contador]="" 
	} 
} 
   
aMesDias = new Matriz(13);
aMesDias[1] = 31;
aMesDias[2] = 28;
aMesDias[3] = 31;
aMesDias[4] = 30;
aMesDias[5] = 31;
aMesDias[6] = 30;
aMesDias[7] = 31;
aMesDias[8] = 31;
aMesDias[9] = 30;
aMesDias[10] = 31;
aMesDias[11] = 30;
aMesDias[12] = 31;
  
function IsDataValida(campoData) {
	var mes, dia, ano, mAjusteAnoBissesto;
	dia = eval(campoData.value.substring(0,2));	
	mes = eval(campoData.value.substring(3,5));
	ano = eval(campoData.value.substring(6,10))
	mAjusteAnoBissesto = 0;	
	if ( (mes == 2) && ((ano%4)== 0) ) 
		mAjusteAnoBissesto = 1;		
	if ( dia <= (aMesDias[mes] + mAjusteAnoBissesto) )
		return true;	
	else
		return false;
}
 
  
function ComparaDatas(campo1, campo2)  // Compara se campo1 é maior que campo2, se for: retorna true
   {
   d1 = eval(campo1.value.substring(0,2));
   m1 = eval(campo1.value.substring(3,5));
   a1 = eval(campo1.value.substring(6,10));   
   d2 = eval(campo2.value.substring(0,2));
   m2 = eval(campo2.value.substring(3,5));
   a2 = eval(campo2.value.substring(6,10));   
   if (a1 > a2) {
	   	return true;
   }
   else if ((a1 == a2 && m1 > m2) || (a1 == a2 && m1 == m2 && d1 >= d2)) {
	   return true;
   }
   else{
	   return false;
	}
   
}
 
 
function QuantidadeDias(mData)  // Retornas quantos dias há na data selecionada
   {
   d1 = eval(mData.substring(0,2));
   m1 = eval(mData.substring(3,5));
   a1 = eval(mData.substring(6,10));   
   return ( (a1 * 365) + (m1 * 30) + d1 )
}
 
 
// -------- Converte os valores para Maiúsculo no onChange()
function Upper(campo) {
	campo.value = campo.value.toUpperCase()
}


function TruncarLimite(campo,limite) {
	var msg
	msg = campo.value;	
	campo.value = msg.substring(0,limite);
}

	
function TamMaximo(campo, limite) {
	if (campo.value.length > limite-1)
		return false;
	else
		return true;
}


// ------------------------------- Validar Vários Tipos de Campos
// Paramentro tipo  define qual tipo de dado vai validar
//  1 - function Num [somente numeros]
//  2 - function Num [+ validacoes de moeda]
//  3 - function Num [+ validacoes de data]

// Como Usar: onKeyPress="return ValidaTecla(this, event, 1)

function ValidaString(campo, event) {
    var key;
    var tecla;
    if (navigator.appName.indexOf("Netscape") != -1 )
 	tecla = event.which;
    else
	tecla = event.keyCode;
    key = String.fromCharCode(tecla);    
    if (tecla == 34 || tecla == 39 || tecla == 96)
	return false;
    else
        return(key);
}


function ValidaTecla(campo, event, tipo) {
    var BACKSPACE = 8;
    var key;
    var tecla;
    if (navigator.appName.indexOf("Netscape") != -1 )
 	tecla = event.which;
    else
	tecla = event.keyCode;
    key = String.fromCharCode(tecla);

	if (tecla == 13)
		return false;

	if(tecla == BACKSPACE)
		return true;
	
	if(tipo == 1)
		return(Num(key));

	if(tipo == 2){
		if(Num(key)){
			FormataMoedaAperta(campo);
			return true;
		}else return false;
	}
	
	if(tipo == 3)
            { return Num(key); 	}
}
 
// ------------------------------- Validar Caracter Numerico - Complementar de: ValidaTecla(campo, event, tipo)
function Num(caractere)
     {
     var strValidos = "0123456789";
     if (strValidos.indexOf(caractere)  == -1)
	return false; 
     return true;
     }


// ------------------------------- MoedaAperta- Complementar de: ValidaTecla(campo, event, tipo)
function FormataMoedaAperta(campo)
     {
	Dados = campo.value;
	for(i=0;i<Dados.length;i++)Dados = Dados.replace(",", "");
	for(i=0;i<Dados.length;i++)Dados = Dados.replace(".", "");	
	tam = campo.value.length;
	if (tam >= 1)
     	   campo.value = Dados.substr( 0, tam - 2 ) + ',' + Dados.substr( tam - 2, tam );
     }


// ------------------------------- Formata Moeda - Complementar de: ValidaTecla(campo, event, tipo)
function FormataMoeda(campo)
      {
	Dados = campo.value;
	for(i=0;i<Dados.length;i++)Dados = Dados.replace(",", "");
	for(i=0;i<Dados.length;i++)Dados = Dados.replace(".", "");
	var tam = Dados.length;
	if (tam == 0)
          { Dados = "0,00";
	    campo.value=Dados; }

	if (tam == 1)
          { Dados="0,0"+Dados;
	    campo.value=Dados; }

	if (parseInt(tam) == 2)
          { Dados = '0,'+ Dados;
	    campo.value=Dados; }

	if (tam >2)
	    Dados = Dados.substr( 0, tam - 2 ) + ',' + Dados.substr( tam - 2, tam ) ; 
	    tam++;

	if(tam >5)
           {
	   i=6;
	   while(i<tam)
              {
	      Dados = Dados.substr( 0, tam - i ) + '.' + Dados.substr( tam - i, tam ) ; 
	      i=i+4;
	      tam++;
	      }
	}
	campo.value=Dados;
}
 
function FormatNumber(number)
   {   
   var num = new String (number);
   if (num.indexOf (".") == -1) {
      intLen = num.length;
      toEnd = intLen;
      var strLeft = new String (num.substring (0, toEnd));
      var strRight = new String ("00");
      }
   else {
      pos = eval (num.indexOf ("."));
      var strLeft = new String (num.substring (0, pos));
	  
      intToEnd = num.length;
      intThing = pos + 1;
      var strRight = new String (num.substring (intThing, intToEnd));
	  
      if (strRight.length > 2) {
         nextInt = strRight.charAt(2);
         strRight = new String (strRight.substring (0, 2));
         }
      else {
         if (strRight.length != 2)
            strRight = strRight + "0";
         }
      }
	  
   if (strLeft.length > 3)
      {
      var curPos = (strLeft.length - 3);
	  
      while (curPos > 0)
         {
         var remainingLeft = new String (strLeft.substring (0, curPos));
         var strLeftLeft = new String (strLeft.substring (0, curPos));
         var strLeftRight = new String (strLeft.substring (curPos, strLeft.length));		 
         strLeft = new String (strLeftLeft + "." + strLeftRight);
         curPos = (remainingLeft.length - 3);
         }
      }

   strWhole = strLeft + "," + strRight;
   return (strWhole);
   }

 
function Desformatar(mParametro) {
	mValor = replaceSubstring( mParametro, ".", "");
	mValor = replaceSubstring( mValor, ",", ".");
	return mValor 
}
  
// Função de validação de CPF
function isCPF(st) {
if (st == "")
  return (false);
l = st.length;

//Aleterado para se usuário não digitar os zeros na frente do CPF, completar sozinho
if ((l == 9) || (l == 8))
{
            for (i = l ; i < 10; i++)
            {
                        st = '0' + st
            }
}
l = st.length;
st2 = "";
for (i = 0; i < l; i++) {
  caracter = st.substring(i,i+1);
  if ((caracter >= '0') && (caracter <= '9'));
     st2 = st2 + caracter;
}
if ((st2.length > 11) || (st2.length < 10))
   return (false);
if (st2.length==10)
   st2 = '0' + st2;
digito1 = st2.substring(9,10);
digito2 = st2.substring(10,11);
digito1 = parseInt(digito1,10);
digito2 = parseInt(digito2,10);
sum = 0; mul = 10;
for (i = 0; i < 9 ; i++) {
    digit = st2.substring(i,i+1);
    tproduct = parseInt(digit ,10) * mul;
    sum += tproduct;
    mul--;
}
dig1 = ( sum % 11 );
if ( dig1==0 || dig1==1 )
   dig1=0;
else
  dig1 = 11 - dig1;
if (dig1!=digito1)
  return (false);
sum = 0;
mul = 11;
for (i = 0; i < 10 ; i++) {
    digit = st2.substring(i,i+1);
    tproduct = parseInt(digit ,10)*mul;
    sum += tproduct;
    mul--;
}
dig2 = (sum % 11);
if ( dig2==0 || dig2==1 )
  dig2=0;
else
  dig2 = 11 - dig2;
if (dig2 != digito2)
  return (false);
return (true);
}

function VerifyCNPJ(pcgc) {
	// verifica o tamanho
	if (pcgc.length != 14) {
		sim=false
		alert ("Tamanho Inválido de CNPJ")
		return false;
	}else {
		sim=true
	}
	if (sim ){ // verifica se e numero
		for (i=0;((i<=(pcgc.length-1))&& sim); i++){
			val = pcgc.charAt(i)
			// alert (val)
			if((val!="9")&&(val!="0")&&(val!="1")&&(val!="2")&&(val!="3")&&(val!="4") &&(val!="5")&&(val!="6")&&(val!="7")&&(val!="8")) {
				sim=false
			}
		}
		if (sim){ // se for numero continua
			m2 = 2
			soma1 = 0
			soma2 = 0
			for (i=11;i>=0;i--){
				val = eval(pcgc.charAt(i))
				m1 = m2
				if (m2<9) { 
					m2 = m2+1
				}else {
					m2 = 2
				}
				soma1 = soma1 + (val * m1)
				soma2 = soma2 + (val * m2)
			} // fim do for de soma
			soma1 = soma1 % 11
			if (soma1 < 2) { 
				d1 = 0
			}else { 
				d1 = 11- soma1
			}
			soma2 = (soma2 + (2 * d1)) % 11
			if (soma2 < 2) {
				d2 = 0
			}else { 
				d2 = 11- soma2
			}
			// alert (d1)
			// alert (d2)
			if ((d1==pcgc.charAt(12)) && (d2==pcgc.charAt(13))){
				return true;
			}else
				alert("CNPJ inválido, digite novamente!")
				return false;
		}
	}
}

function PrencherHora(campo, event) {
	var key;
	var tecla;
	if (navigator.appName.indexOf("Netscape") != -1 )
		tecla = event.which;
	else
		tecla = event.keyCode;
	key = String.fromCharCode(tecla); 
	if (Num(key))
		return FormatarHora(campo);		
	else
		return false;
}

function FormatarHora(campo) {
	Dados = campo.value;
	for(var i=0; i<Dados.length; i++) Dados = Dados.replace(":", "");
	tam = Dados.length;
	campo.value = Dados.substr(0, 2) + ":" + Dados.substr(2, tam)	
	if (eval(Dados.substr(0, 2)) > 24) return false;
	if (eval(Dados.substr(2)) > 5) return false;
}

function ValidarHora(campo) {
	if (campo.value.length < 5) return false;	
	if (eval(campo.value.substr(0, 2)) > 24) return false;
	if (eval(campo.value.substr(3, 5)) > 59) return false;
	return true;
}
 
 
function AdicionarComboList(mObj, mDocumento, mDescricao, mValor) {
	var oOption   = mDocumento.createElement("OPTION");
	oOption.text  = mDescricao;
	oOption.value = mValor;
	mObj.add(oOption);
}

function PrencherData(campo, event) {
	var key;
	var tecla;
	if (navigator.appName.indexOf("Netscape") != -1 )
		tecla = event.which;
	else
		tecla = event.keyCode;
	key = String.fromCharCode(tecla); 
	if (Num(key))
		return FormatarData(campo, eval(key));		
	else
		return false;
}

function FormatarData(campo, key) {
	Dados = campo.value;
	for(var i=0; i < Dados.length; i++) Dados = Dados.replace("/", "");
	if ((tam = Dados.length) > 1) campo.value = Dados.substr(0, 2) + "/" + Dados.substr(2, 2);
	if (tam > 3) campo.value = campo.value + "/" + Dados.substr(4, tam);		
	if (tam == 0 && key > 3) return false;
	if (tam == 1 && eval(Dados.substr(0)) * 10 + key > 31) return false;
	if (tam == 2 && key > 1) return false;
	if (tam == 3 && (eval(Dados.substr(2)) * 10 + key > 12 || eval(Dados.substr(2)) * 10 + key < 1)) return false;
	if (tam == 4 && (key < 1 || key > 2)) return false;
	if (tam == 5 && eval(Dados.substr(4)) * 10 + key < 19) return false;
}

function PrencherData2(campo, event) {
	var key;
	var tecla;
	if (navigator.appName.indexOf("Netscape") != -1 )
		tecla = event.which;
	else
		tecla = event.keyCode;
	key = String.fromCharCode(tecla); 
	if (Num(key))
		return FormatarData2(campo, eval(key));		
	else
		return false;
}

function FormatarData2(campo, key) {
	Dados = campo.value;
	for(var i=0; i < Dados.length; i++) Dados = Dados.replace("/", "");
	if ((tam = Dados.length) > 1) campo.value = Dados.substr(0, 2) + "/" + Dados.substr(2, 2);
	//if (tam > 3) campo.value = campo.value + "/" + Dados.substr(4, tam);		
	if (tam == 0 && key > 3) return false;
	if (tam == 1 && eval(Dados.substr(0)) * 10 + key > 31) return false;
	if (tam == 2 && key > 1) return false;
	if (tam == 3 && (eval(Dados.substr(2)) * 10 + key > 12 || eval(Dados.substr(2)) * 10 + key < 1)) return false;
	if (tam == 4 && (key < 1 || key > 2)) return false;
	if (tam == 5 && eval(Dados.substr(4)) * 10 + key < 19) return false;
}


function Converter(Valor) {
      var temp;
      temp = Valor.value;
      for (var n = 0; n < temp.length; n++)
          if ( temp.charAt(n) == ".")
              Valor.value = temp.substring(0,n) + "," + temp.substring(n+1,temp.length);
}

function replaceSubstring(inputString, fromString, toString) {
   // Goes through the inputString and replaces every occurrence of fromString with toString
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { // If the string being replaced is not a part of the replacement string (normal situation)
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else { // String being replaced is part of replacement string (like "+" being replaced with "++") - prevent an infinite loop
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      // Find a string that doesn't exist in the inputString to be used
      // as an "inbetween" string
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      } // Keep on going until we build an "inbetween" string that doesn't exist
      // Now go through and do two replaces - first, replace the "fromString" with the "inbetween" string
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      // Next, replace the "inbetween" string with the "toString"
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } // Ends the check to see if the string being replaced is part of the replacement string or not
   return temp; // Send the updated string back to the user
} // Ends the "replaceSubstring" function


function FormataCpf(campo,tammax,teclapres) {
	var tecla = teclapres.keyCode;
	// vr = document.form[campo].value;
	vr = event.srcElement.value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	tam = vr.length;

	if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

	if (tecla == 8 ){	tam = tam - 1 ; }
		
	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
		if ( tam <= 2 ){ 
	 		event.srcElement.value = vr ; }
	 	if ( (tam > 2) && (tam <= 5) ){
	 		event.srcElement.value = vr.substr( 0, tam - 2 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 6) && (tam <= 8) ){
	 		event.srcElement.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 9) && (tam <= 11) ){
	 		event.srcElement.value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 12) && (tam <= 14) ){
	 		event.srcElement.value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 15) && (tam <= 17) ){
	 		event.srcElement.value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam ) ;}
	}		
}

function FormataCgc(campo,tammax,teclapres) {
	var tecla = teclapres.keyCode;
	// vr = document.form[campo].value;
	vr = event.srcElement.value;
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( ",", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( ".", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	vr = vr.replace( "-", "" );
	tam = vr.length;

	if (tam < tammax && tecla != 8){ tam = vr.length + 1 ; }

	if (tecla == 8 ){	tam = tam - 1 ; }
		
	if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){
		if ( tam <= 2 ){ 
	 		event.srcElement.value = vr ; }
	 	if ( (tam > 2) && (tam <= 6) ){
	 		event.srcElement.value = vr.substr( 0, tam - 2 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 7) && (tam <= 9) ){
	 		event.srcElement.value = vr.substr( 0, tam - 6 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 10) && (tam <= 12) ){
	 		event.srcElement.value = vr.substr( 0, tam - 9 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 13) && (tam <= 14) ){
	 		event.srcElement.value = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '/' + vr.substr( tam - 6, 4 ) + '-' + vr.substr( tam - 2, tam ) ; }
	 	if ( (tam >= 15) && (tam <= 17) ){
	 		event.srcElement.value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + '-' + vr.substr( tam - 2, tam ) ;}
	}		
}
 
function ValidaTaxa(campo, event, casas)  {
	var BACKSPACE = 8;
	var key;
	var tecla;
	if(navigator.appName.indexOf("Netscape") != -1 )
		tecla = event.which;
	else
		tecla = event.keyCode;
	key = String.fromCharCode(tecla);
	if (tecla == 13)
		return false;
	if(tecla == BACKSPACE)
		return true;	
	if(Num(key)) {
		FormataApertaTaxa(campo, casas);
		return true;
	}
	else 
		return false;
}
 
function FormataApertaTaxa(campo, casas){
	Dados = campo.value;
	for(i=0; i<Dados.length;i++) Dados = Dados.replace(",", "");
	for(i=0; i<Dados.length;i++) Dados = Dados.replace(".", "");	
	tam = campo.value.length;
	if (tam >= 1)    
		campo.value = Dados.substr( 0, tam - casas ) + ',' + Dados.substr( tam - casas, tam ) ; 
}

function FormataTaxa(campo, casas) {
	Dados = campo.value;
	for(i=0; i<Dados.length; i++)  Dados = Dados.replace(",", "");
	for(i=0; i<Dados.length; i++)  Dados = Dados.replace(".", "");
	var tam = Dados.length;
	if (tam > casas) 
		Dados = Dados.substr( 0, tam - casas ) + ',' + Dados.substr( tam - casas, tam ); 
	else 
		if (tam == casas)
			Dados = "0," + Dados;
		else
			Dados = "0," + Dados + Repeat("0", casas - tam);
	campo.value=Dados;
} 
 
function Repeat(mElemento, mCont) {
	return mElemento + (mCont > 1 ? Repeat(mElemento, mCont-1) : '');
}

function CampoNulo(campo){
	if (arguments.length == 2)
		minCaracter = arguments[1];
	else
		minCaracter = "1";
		if ( campo.value.length && campo.value.length < minCaracter) {
			alert("Favor, preencha o campo "+ campo.alt +" corretamente ou deixe em branco !");
			campo.value = "";	
			campo.focus();
			return false;
		}
		return true;
}

//Usada na Avaliação
function Matrix(n) { 
      this.length = n;
      for (var i = 0 ; i <= n ; i++)
          this[i] = "";
}
