
// HTMLSelect.js


function buildGenericSelect(name, options, atts, option) {

  document.writeln("<select name=\"" + name + "\" " + atts + "><option value=\"\"" + (option == "" ? " selected " : "") + ">---");
  for (i = 0; i < options.length; i++) {
    document.writeln("<option value=\"" + options[i].value + "\"" + (option == options[i].value ? " selected" : "") + ">" + options[i].text + "</option>");
  }
  document.writeln("</select>");
}

function rebuildGenericSelect(campo, options, atts, option) {
	rebuildGenericSelect(campo, options, atts, option, false);
}

function rebuildGenericSelect(campo, options, atts, option, htmlDecode) {
  var i, len;

  for (i = 0, len = campo.length; i < len; i++) {
    campo.options[0] = null;
  }

  campo.options[0] = new Option("---", "");
  var j;
  j=1;

  for (i = 0; i < options.length; i++) {
    if(htmlDecode)
    	campo.options[j] = new Option(HtmlDecode(options[i].text), options[i].value);
    else
    	campo.options[j] = new Option(options[i].text, options[i].value);
    j++;
  }
  campo.selectedIndex = 0;
}


function buildListBankAcceptDCC(name) {
	/* var list = new Array(
		  new Option("001 - Banco do Brasil S.A."                       , "001")
		, new Option("008 - Banco Santander Meridional"                 , "008")
		, new Option("033 - BANESPA - Banco do Estado de São Paulo"     , "033")
		, new Option("237 - Banco Bradesco S.A."                        , "237")
		, new Option("341 - Banco Itau S.A."                            , "341")
		, new Option("347 - Banco Sudameris Brasil S.A."                , "347")
		, new Option("353 - Banco Santander Brasil S.A."                , "353")
		, new Option("356 - Banco ABN AMRO Real S.A."                   , "356")
		, new Option("399 - HSBC BANK BRASIL S.A."                      , "399")
		, new Option("409 - Unibanco - Uniao dos Bancos Brasileiros"    , "409")
		, new Option("422 - Banco Safra S.A."                           , "422")
		, new Option("745 - Banco CitiBank S.A."                        , "745")
		);
	buildGenericSelect(name, list, "", ""); */
}

function getOptionText(options, value) {
  var i;
  for (i = 0; i < options.length; i++) {
    if (value == options[i].value) {
      return options[i].text;
    }
  }
  return "";
}


function buildSourceCodeSelect(name) {
  var list = new Array(
      new Option("Novo cliente na loja"             , "1")
    , new Option("Novo cliente captura na loja"     , "2")
    , new Option("Novo cliente captura nas empresas", "3")
    , new Option("Funcion&aacute;rio Carrefour"     , "4")
    , new Option("R&eacute;plica"                   , "5")
  );
  buildGenericSelect(name, list, "", "");
}


function buildDocumentTypeSelect(name) {
  var list = new Array(
      new Option("Original"    , "O")
    , new Option("C&oacute;pia", "C")
    , new Option("Nenhum"      , "N")
  );
  buildGenericSelect(name, list, "", "");
}


function buildSexTypeSelect(name) {
  return buildSexTypeSelect(name, "");
}
function buildSexTypeSelect(name, option) {
  var list = new Array(
      new Option("Masculino", "M")
    , new Option("Feminino" , "F")
  );
  buildGenericSelect(name, list, "", option);
}


function buildUFSelect(name) {
  buildUFSelect(name, "");
}
function buildUFSelect(name, option) {
  var list = new Array(
      new Option("Acre"                 , "AC")
    , new Option("Alagoas"              , "AL")
    , new Option("Amap&aacute;"         , "AP")
    , new Option("Amazonas"             , "AM")
    , new Option("Bahia"                , "BA")
    , new Option("Cear&aacute;"         , "CE")
    , new Option("Distrito Federal"     , "DF")
    , new Option("Esp&iacute;rito Santo", "ES")
    , new Option("Goias"                , "GO")
    , new Option("Maranh&atilde;o"      , "MA")
    , new Option("Mato Grosso"          , "MT")
    , new Option("Mato Grosso do Sul"   , "MS")
    , new Option("Minas Gerais"         , "MG")
    , new Option("Par&aacute;"          , "PA")
    , new Option("Para&iacute;ba"       , "PB")
    , new Option("Paran&aacute;"        , "PR")
    , new Option("Pernambuco"           , "PE")
    , new Option("Piau&iacute;"         , "PI")
    , new Option("Rio de Janeiro"       , "RJ")
    , new Option("Rio Grande do Norte"  , "RN")
    , new Option("Rio Grande do Sul"    , "RS")
    , new Option("Rond&ocirc;nia"       , "RO")
    , new Option("Roraima"              , "RR")
    , new Option("Santa Catarina"       , "SC")
    , new Option("S&atilde;o Paulo"     , "SP")
    , new Option("Sergipe"              , "SE")
    , new Option("Tocantins"            , "TO")
    , new Option("Exterior"             , "YY")
  );
  buildGenericSelect(name, list, "", option);
}

function getResidenceTypeArray() {
  return new Array(
      new Option("Pr&oacute;pria: Financiada quitada"                  , "Q")
    , new Option("Pr&oacute;pria: Financiada em curso"                 , "C")
    , new Option("Pr&oacute;pria: Heran&ccedil;a, doa&ccedil;&atilde;o", "H")
    , new Option("Pr&oacute;pria: Outro"                               , "Z")
    , new Option("N&atilde;o pr&oacute;pria: Aluguel"                  , "L")
    , new Option("N&atilde;o pr&oacute;pria: Com os pais"              , "P")
    , new Option("N&atilde;o pr&oacute;pria: De familiar"              , "F")
    , new Option("N&atilde;o pr&oacute;pria: Funcional"                , "E")
    , new Option("N&atilde;o pr&oacute;pria: Outro"                    , "O")
  );
}
function getResidenceTypeDescription(value) {
  return getOptionText(getResidenceTypeArray(), value);
}
function buildResidenceTypeSelect(name) {
  buildResidenceTypeSelect(name, "");
}
function buildResidenceTypeSelect(name, option) {
  buildResidenceTypeSelect(name, option, "");
}
function buildResidenceTypeSelect(name, option, atts) {
  buildGenericSelect(name, getResidenceTypeArray(), atts, option);
}

function getPhoneTypeArray() {
  return new Array(
      new Option("N&atilde;o possui", "N")
    , new Option("Pr&oacute;prio"   , "P")
    , new Option("Recado"           , "R")
    , new Option("Terceiro"         , "T")
  );
}
function getPhoneTypeDescription(value) {
  return getOptionText(getPhoneTypeArray(), value)
}
function buildPhoneTypeSelect(name) {
  buildPhoneTypeSelect(name, "");
}
function buildPhoneTypeSelect(name, option) {
  buildPhoneTypeSelect(name, option, "");
}
function buildPhoneTypeSelect(name, option, atts) {
  buildGenericSelect(name, getPhoneTypeArray(), atts, option);
}

function getLastActivityArray() {
  return new Array(
      new Option("Primeiro emprego"      , "1")
    , new Option("Desempregado"          , "2")
    , new Option("Atividade profissional", "3")
  );
}
function getLastActivityDescription(value) {
  return getOptionText(getLastActivityArray(), value);
}
function buildLastActivitySelect(name) {
  buildLastActivitySelect(name, "");
}
function buildLastActivitySelect(name, option) {
  buildGenericSelect(name, getLastActivityArray(), "", option);
}


function getBankAccountTypeArray() {
  return new Array(
      new Option("N&atilde;o possui", " ")
    , new Option("Comum"            , "N")
    , new Option("Especial"         , "O")
  );
}

function getBankAccountTypeDescription(value) {
  return getOptionText(getBankAccountTypeArray(), value)
}

function buildBankAccountTypeSelect(name, atts) {
  buildBankAccountTypeSelect(name, atts, "");
}

function buildBankAccountTypeSelect(name, atts, option) {
  buildGenericSelect(name, getBankAccountTypeArray(), atts, option);
}

function getBankAccountTitArray(hasSpouse) {
  var list;
  if (hasSpouse) {
    list = new Array(
        new Option("Titular"       , "1")
      , new Option("C&ocirc;njuge" , "2")
      , new Option("Conta conjunta", "J")
    );
  }
  else {
    list = new Array(
        new Option("Titular"       , "1")
    );
  }
  return list;
}
function getBankAccountTitDescription(hasSpouse, value) {
  return getOptionText(getBankAccountTitArray(hasSpouse), value);
}

function buildBankAccountTitSelect(name, hasSpouse) {
  buildBankAccountTitSelect(name, hasSpouse, "");
}

function buildBankAccountTitSelect(name, hasSpouse, option) {
  buildGenericSelect(name, getBankAccountTitArray(hasSpouse), "", option);
}

function rebuildBankAccountTitSelect(name, hasSpouse) {
  rebuildBankAccountTitSelect(name, hasSpouse, "");
}

function rebuildBankAccountTitSelect(name, hasSpouse, option) {
  rebuildGenericSelect(name, getBankAccountTitArray(hasSpouse), "", option, true);
}

function getYesNoArray() {
  return new Array(
      new Option("N&atilde;o", "N")
    , new Option("Sim"       , "O")
  );
}

function getYesNoArrayValue() {
  return new Array(
      new Option("N&atilde;o", "0")
    , new Option("Sim"       , "1")
  );
}

function getYesNoDescription(value) {
  return getOptionText(getYesNoArray(), value);
}
function buildYesNoSelect(name) {
  buildYesNoSelect(name, "");
}
function buildYesNoSelect(name, option) {
  buildYesNoSelect(name, option, false);
}

function buildYesNoSelect(name, option, isValue) {
  if (isValue)
  {
  	buildGenericSelect(name, getYesNoArrayValue(), "", option);
  }
  else
  {
  	buildGenericSelect(name, getYesNoArray(), "", option);
  }
}

function rebuildYesNoSelect(field) {
  rebuildYesNoSelect(field, "");
}
function rebuildYesNoSelect(field, option) {
  rebuildGenericSelect(field, getYesNoArray(), "", option);
}

function buildPaymentSelect(name) {
  var list = new Array(
      new Option("20% da fatura", "0")
    , new Option("Valor1"       , "1")
    , new Option("Valor2"       , "2")
    , new Option("Valor3"       , "3")
  );
  buildGenericSelect(name, list, "", "");
}


function buildVencSelect(name) {
  buildVencSelect(name, "");
}

// 09/02/04 - Alterada essa funcao para que seja verificada a data de corte
// mais proxima da data em que esta sendo feita a abertura e retirada essa
// opcao de escolha do cliente, isso evita que ele pague a entrada e a
// primeira parcela no mesmo mes. - cgn

function buildVencSelect(name, option) {

  var d = new Date();

  if (d.getDate() <= 5) {
	  var list = new Array(
      	      new Option("01", "01")
	    , new Option("05", "05")
	    , new Option("10", "10")
	    , new Option("20", "20")
	    , new Option("25", "25")
	  );
  } else if (d.getDate() <= 10) {
	  var list = new Array(
      	      new Option("01", "01")
	    , new Option("05", "05")
	    , new Option("10", "10")
	    , new Option("15", "15")
	    , new Option("25", "25")
	  );
  } else if (d.getDate() <= 15) {
  	  var list = new Array(
      	      new Option("01", "01")
	    , new Option("05", "05")
	    , new Option("10", "10")
	    , new Option("15", "15")
	    , new Option("20", "20")
	  );
  } else if (d.getDate() <= 20) {
  	  var list = new Array(
	      new Option("05", "05")
	    , new Option("10", "10")
	    , new Option("15", "15")
	    , new Option("20", "20")
	    , new Option("25", "25")
	  );
  } else if (d.getDate() <= 25) {
  	  var list = new Array(
      	      new Option("01", "01")
	    , new Option("10", "10")
	    , new Option("15", "15")
	    , new Option("20", "20")
	    , new Option("25", "25")
	  );
  } else {
  	  var list = new Array(
      	      new Option("01", "01")
	    , new Option("05", "05")
	    , new Option("15", "15")
	    , new Option("20", "20")
	    , new Option("25", "25")
	  );
  }
  buildGenericSelect(name, list, "", option);
}

function buildPaymentModeSelect(name, cred, dcc) {
  buildPaymentModeSelect(name, cred, dcc, "");
}

function buildPaymentModeSelect(name, cred, dcc, option) {
  buildPaymentModeSelect(name, cred, dcc, option, false);
}

function buildPaymentModeSelect(name, cred, dcc, option, isCredDTS) {


	var optDCCProg      = new Option("DCC Programado"                              , "P");
	var optDCCProgFix   = new Option("DCC parcela fixa"                            , "9");
	var optDCCProgMin   = new Option("DCC pagamento m\u00ednimo"                   , "P");
	var optDCCBoleto    = new Option("Boleto/DCC"                                  , "I");
	var optDCCCarne     = new Option("Carn\u00ea/DCC"                              , "I");
	var optBoleto       = new Option("Boleto"                                      , "N");
	var optCarneLoja    = new Option("Carn\u00ea (Emitido na Loja)"                , "C");
	var optCarneCorreio = new Option("Carn\u00ea (Enviado pelo Correio)"           , "M");
	var optCarne        = new Option("Carn\u00ea"                                  , "M");
	var optCheque       = new Option("Cheque"                                      , "D");
	var optPagtoExtA    = new Option("Parcelado no Cart\u00e3o - Normal   (Modo A)", "A");
	var optPagtoExtG    = new Option("Parcelado no Cart\u00e3o - Integral (Modo G)", "G");

	var list;
	if (dcc) {
		if (cred) {
			if (isCredDTS) {
				list = new Array(optDCCProg, optDCCCarne, optCarneLoja, optCarneCorreio, optCheque, optPagtoExtA, optPagtoExtG);
			}
			else {
				list = new Array(optDCCProg, optDCCCarne, optCarneLoja, optCarneCorreio, optCheque);
			}
		}
		else {
			list = new Array(optDCCBoleto, optBoleto);
		}
	}
	else {
		if (cred) {
			if (isCredDTS) {
				list = new Array(optCarneLoja, optCarneCorreio, optCheque, optPagtoExtA, optPagtoExtG);
			}
			else {
				list = new Array(optCarneLoja, optCarneCorreio, optCheque);
			}
		}
		else {
			list = new Array(optBoleto);
		}
	}

	buildGenericSelect(name, list, "", option);
}


function buildFullPaymentModeSelect(name, option) {
  buildFullPaymentModeSelect(name, option, '0'); // default is not Carrefour
}

function buildFullPaymentModeSelect(name, option, isCarrefour) {
  buildFullPaymentModeSelect(name, option, isCarrefour, '0'); // default doesn't clean 'option'
}

function buildFullPaymentModeSelect(name, option, isCarrefour, isClearOption ) {
  buildFullPaymentModeSelect(name, option, isCarrefour, isClearOption, '0');
}


function buildFullPaymentModeSelect(name, option, isCarrefour, isClearOption, isClassic) {
  var optCheque  = new Option("Cheque"                                      , "D"); // Cheque
  var optDCC     = new Option("DCC"                                         , "P"); // DCC Programado
  var optCarne   = new Option("Carn\u00ea"                                  , "M"); // Carne
  var optCarDCC  = new Option("Carn\u00ea/DCC"                              , "A"); // Carne, DCC Programado e DCC Avulso
  var optChkDCC  = new Option("Cheque/DCC"                                  , "H"); // Cheque e DCC Programado
  var optAll     = new Option("Todos"                                       , "X"); // Cheque, Carne, DCC Programado e DCC Avulso
	var optPagExtA = new Option("Parcelado no Cart\u00e3o - Normal   (Modo A)", "Z"); // Modo A
	var optPagExtG = new Option("Parcelado no Cart\u00e3o - Integral (Modo G)", "G"); // Modo G

  if ( isCarrefour == '1' ) {
    if( option == 'Z' ) {
      if( isClearOption == '1' ) { // campo option veio setado mas precisa ser limpo para nao ser mostrado selecionado no menu - FRJL 16/02/05
	option = "";
      }
      list = new Array(optPagExtA);
    }
    else if (isClassic) {
	  list = new Array(optCarne, optDCC);
	}
	else {
      list = new Array(optCarne);
    }
  } else {
      list = new Array(optCheque, optDCC, optCarne, optChkDCC, optCarDCC, optAll, optPagExtA, optPagExtG);
  }
  buildGenericSelect(name, list, "", option);
}

function rebuildFullPaymentModeSelect(isCarrefour, prodCode, list) {
  var i, len;

  for (i = 0, len = list.length; i < len; i++) {
    list.options[i] = null;
  }

  var optNull    = new Option("---"                                         , " ");
  var optCheque  = new Option("Cheque"                                      , "D"); // Cheque
  var optDCC     = new Option("DCC"                                         , "P"); // DCC Programado
  var optCarne   = new Option("Carn\u00ea"                                  , "M"); // Carne
  var optCarDCC  = new Option("Carn\u00ea/DCC"                              , "A"); // Carne, DCC Programado e DCC Avulso
  var optChkDCC  = new Option("Cheque/DCC"                                  , "H"); // Cheque e DCC Programado
  var optAll     = new Option("Todos"                                       , "X"); // Cheque, Carne, DCC Programado e DCC Avulso
  var optPagExtA = new Option("Parcelado no Cart\u00e3o - Normal   (Modo A)", "Z"); // Modo A
  var optPagExtG = new Option("Parcelado no Cart\u00e3o - Integral (Modo G)", "G"); // Modo G
  list.options[0] = optNull;
  i = 0;

  if ( isCarrefour == '1' ) {
    // Se for SPAR, CPAR, ESPR ou ECPR envio para tratamento especifico no js
    if ( prodCode == "SPAR" || prodCode == "CPAR" || prodCode == "ESPR" || prodCode == "ECPR" || prodCode == "CRST" || prodCode == "CRAF" || prodCode == "CRES" ) {
      list.options[++i] = optPagExtA;
    // Senao, se for o crediario classico o pagto pode ser carne ou dcc
    } else if (prodCode == "CREC") {
	  list.options[++i] = optCarne;
      list.options[++i] = optDCC;
    } else {
      list.options[++i] = optCarne;
    }
  } else {
    list.options[++i] = optCheque;
    list.options[++i] = optDCC;
    list.options[++i] = optCarne;
    list.options[++i] = optChkDCC;
    list.options[++i] = optCarDCC;
    list.options[++i] = optAll;
    list.options[++i] = optPagExtA;
    list.options[++i] = optPagExtG;
  }
}


function isPaymentModeDCC(paymentMode) {
  return paymentMode == 'P' || paymentMode == 'I';
}


function checkModalityPaymentMode(modalityPaymentMode, paymentMode) {
  switch (modalityPaymentMode) {
    case 'D': // Cheque
      return paymentMode == 'D';
    case 'P': // DCC Programado
      return paymentMode == 'P';
    case 'M': // Carne
      return paymentMode == 'M' || paymentMode == 'C' || paymentMode == 'N';
    case 'A': // Carne, DCC Programado e DCC Avulso
      return paymentMode == 'M' || paymentMode == 'C' || paymentMode == 'N' || isPaymentModeDCC(paymentMode);
    case 'H': // Cheque e DCC Programado
      return paymentMode == 'D' || paymentMode == 'P';
		case 'Z': // Pagamento no Extrato Cartao - modo A
			return paymentMode == 'A';
		case 'G': // Pagamento no Extrato Cartao - modo G
			return paymentMode == 'G';
    case 'X': // Todos
			return paymentMode != 'A' && paymentMode != 'G';
    default: return true;
  }
}


function buildPaymentModeDescription(mode) {
  switch (mode) {
    case 'P': return "DCC Programado";
    case 'I': return "DCC Avulso";
    case 'N': return "Boleto";
    case 'M': return "Carn\u00ea";
    case 'D': return "Cheque";
    default : return "";
  }
}


function buildModalityTypeSelect(name, option) {

  var optNormal    = new Option("Normal",   "N");
  var optGratuito  = new Option("Gratuito", "G");
  var optComposto  = new Option("Composto", "C");

  list = new Array(optNormal, optGratuito);

  buildGenericSelect(name, list, "", option);
}



function enableDCC(B)
{
	if(dccBankList == null)
	{
		return false;
	}
	else
	{
		for(i = 0; i < dccBankList.length; i++)
		{
			if(B == dccBankList[i])
			{
				return true;
			}
		}
	}
	return false;
}


function buildPaymentModeSelectToCadExpress(name, cred, dcc, option) {

  var optDCCProg      = new Option("DCC Programado"                   , "P");
  var optCheque       = new Option("Cheque"                           , "D");

  var list;
  if (cred) {
	if (dcc){
 	     list = new Array(optDCCProg, optCheque);
	}
	else{
		list = new Array(optCheque);
	}
    }
  else{
	list = new Array(optCheque);
  }


  buildGenericSelect(name, list, "", option);
}


function rebuildPaymentModeSelectToCadExpress(dcc, cred, sel) {
  var i, len;

  for (i = 0, len = sel.length; i < len; i++) {
    sel.options[0] = null;
  }
  sel.options[0] = new Option("---", "");

  i = 0;
  if (dcc) {
    sel.options[++i] = new Option("DCC Programado"                   , "P");
    sel.options[++i] = new Option("Cheque"                           , "D");

  }
  else{
    sel.options[++i] = new Option("Cheque"                           , "D");
      }
  sel.selectedIndex = 0;
}

function buildPaymentModeSelectToExpressPlus(name, cred, dcc, option) {

  var optDCCProg      = new Option("DCC Programado"                   , "P");
  var optCheque       = new Option("Cheque"                           , "D");

  var list;
  if (cred) {
	if (dcc){
 	     list = new Array(optDCCProg, optCheque);
	}
	else{
		list = new Array(optCheque);
	}
    }
  else{
	list = new Array(optCheque);
  }


  buildGenericSelect(name, list, "", option);
}


function rebuildPaymentModeSelectToExpressPlus(dcc, cred, sel) {
  var i, len;

  for (i = 0, len = sel.length; i < len; i++) {
    sel.options[0] = null;
  }
  sel.options[0] = new Option("---", "");

  i = 0;
  if (dcc) {
    sel.options[++i] = new Option("DCC Programado"                   , "P");
    sel.options[++i] = new Option("Cheque"                           , "D");

  }
  else{
    sel.options[++i] = new Option("Cheque"                           , "D");
      }
  sel.selectedIndex = 0;
}

function rebuildPaymentModeSelect(dcc, cred, sel) {

  var i, len;

  for (i = 0, len = sel.length; i < len; i++) {
    sel.options[0] = null;
  }
  sel.options[0] = new Option("---", "");

  i = 0;
  if (cred) {

    if (dcc) {

      sel.options[++i] = new Option("DCC Programado"    , "P");
      sel.options[++i] = new Option("Carn\u00ea/DCC"    , "I");
    }

    sel.options[++i] = new Option("Carn\u00ea (Emitido na Loja)"     , "C");
    sel.options[++i] = new Option("Carn\u00ea (Enviado pelo Correio)", "M");
    sel.options[++i] = new Option("Cheque"                           , "D");
  }
  else {

    if (dcc) {

      sel.options[++i] = new Option("Boleto/DCC"                , "I");
    }
    sel.options[++i] = new Option("Boleto"                      , "N");
  }

  sel.selectedIndex = 0;
}

function rebuildModalityGroupSelect(isCarrefour, productCode,sel){
	var i, len;

  for (i = 0, len = sel.length; i < len; i++) {
    sel.options[0] = null;
  }
	i = 0;

	var optRotativo       = new Option("Rotativo",           "0100");
	var optRotParcelado   = new Option("Rotativo Parcelado", "0102");
	var optCredNormal     = new Option("Crediario Normal",   "0200");
	var optCredEspec      = new Option("Crediario Especial", "0202");
	var optCredAvulso     = new Option("Crediario Avulso"  , "0203");
	var optPreDatadoUnico = new Option("Crediario Pre-datado Unico", "0304");
	var optPreDatadoParce = new Option("Crediario Pre-datado Parcelado",    "0306");
	var optCrediarioEntra = new Option("Crediario com entrada", "0400");
	var optCredNet        = new Option("Crediario Internet", "0500");
	var optCredNetEntra   = new Option("Crediario Internet com entrada", "0502");
	var optParceladoNormal= new Option("Parcelado Normal", "0600");
	var optParceladoEspec = new Option("Parcelado Especial", "0602");
	var optParceladoEntrNormal= new Option("Parcelado com Entrada Normal", "0700");
	var optParceladoEntrEspec = new Option("Parcelado com Entrada Especial", "0702");
	var optCredClassic        = new Option("Crediario Classico",   "0207");
	var optWebSaquePPS     = new Option("Web Saque Parcelado","103");

  if ( isCarrefour == '1' )
    {
      if( productCode == "SPAR" )
	{
	  sel.options[++i] = optParceladoEspec;
	}
      else if( productCode == "CPAR" )
	{
	  sel.options[++i] = optParceladoNormal;
	}
	  else if( productCode == "CRES" )
	{
		sel.options[++i] = optParceladoNormal;
		sel.options[++i] = optParceladoEspec;
	}
      else if( productCode == "ESPR" || productCode == "CRAF")
	{
	  sel.options[++i] = optParceladoEntrEspec;
	}
      else if( productCode == "ECPR" || productCode == "CRST" )
	{
	  sel.options[++i] = optParceladoEntrNormal;
	}
      else if( productCode == "CREC" )
	{
	  sel.options[++i] = optCredClassic;
	}
      else
	{
	  sel.options[++i] = optRotativo;
		sel.options[++i] = optCredNormal;
		sel.options[++i] = optCredEspec;
		sel.options[++i] = optCredAvulso;
	}
    }
	else
	{
		if( ( productCode == "RCET" ) || ( productCode == "ROT0" ) ||
				( productCode == "ROT1" ) || ( productCode == "ROT2" ) ||
				( productCode == "ROT6" ) || ( productCode == "ROT9" ) )
		{
			sel.options[++i] = optRotativo;
		}
		else if( productCode =="CREF" )
		{
			sel.options[++i] = optRotParcelado;
		}
		else if( ( productCode == "CREN" ) || ( productCode == "CRES" ) ||
						 ( productCode == "SYSN" ) || ( productCode == "SYSS" ) )
		{
			sel.options[++i] = optCredNormal;
			sel.options[++i] = optCredNet;
		}
		else if( ( productCode == "CRET" ) || ( productCode == "CRST" ) ||
						 ( productCode == "SYSE" ) || ( productCode == "SYSC" ) ||
						 ( productCode == "CENT" ) || ( productCode == "CSET" ) )
		{
			sel.options[++i] = optCrediarioEntra;
			sel.options[++i] = optCredNetEntra;
		}
		else if (productCode == "PPSI" )
		{
			sel.options[++i] = optWebSaquePPS;
		}
		else if( ( productCode == "0000" ) || ( productCode == "    " ) )
		{
		}
		else
		{
			sel.options[++i] = optRotativo;
			sel.options[++i] = optRotParcelado;
			sel.options[++i] = optCredNormal;
			sel.options[++i] = optCredEspec;
			sel.options[++i] = optPreDatadoUnico;
			sel.options[++i] = optPreDatadoParce;
			sel.options[++i] = optCrediarioEntra;
			sel.options[++i] = optCredNet;
			sel.options[++i] = optCredNetEntra;
		}
  }


}
function buildModalityGroupSelect(name, option, isCarrefour, productCode ) {

	var optRotativo       = new Option("Rotativo",           "0100");
	var optRotParcelado   = new Option("Rotativo Parcelado", "0102");
	var optCredNormal     = new Option("Credi&aacute;rio Normal",   "0200");
	var optCredEspec      = new Option("Credi&aacute;rio Especial", "0202");
	var optCredAvulso     = new Option("Credi&aacute;rio Avulso"  , "0203");
	var optPreDatadoUnico = new Option("Credi&aacute;rio Pr&eacute;-datado &Uacute;nico", "0304");
	var optPreDatadoParce = new Option("Credi&aacute;rio Pr&eacute;-datado Parcelado",    "0306");
	var optCrediarioEntra = new Option("Credi&aacute;rio com entrada", "0400");
	var optCredNet        = new Option("Credi&aacute;rio Internet", "0500");
	var optCredNetEntra   = new Option("Credi&aacute;rio Internet com entrada", "0502");
	var optParceladoNormal= new Option("Parcelado Normal", "0600");
	var optParceladoEspec = new Option("Parcelado Especial", "0602");
	var optParceladoEntrNormal= new Option("Parcelado com Entrada Normal", "0700");
	var optParceladoEntrEspec = new Option("Parcelado com Entrada Especial", "0702");
	var optCredClassic        = new Option("Credi&aacute;rio Cl&aacute;ssico",   "0207");
	var optWebSaquePPS     = new Option("Web Saque Parcelado","103");

  if ( isCarrefour == '1' )
    {
      if( productCode == "SPAR" )
	{
	  list = new Array(optParceladoEspec);
	}
      else if( productCode == "CPAR" )
	{
	  list = new Array(optParceladoNormal);
	}
	  else if( productCode == "CRES" )
	{
		list = new Array(optParceladoNormal);
		list = new Array(optParceladoEspec);
	}
      else if( productCode == "ESPR" || productCode == "CRAF")
	{
	  list = new Array(optParceladoEntrEspec);
	}
      else if( productCode == "ECPR" || productCode == "CRST" )
	{
	  list = new Array(optParceladoEntrNormal);
	}
      else if( productCode == "CREC" )
	{
	  list = new Array(optCredClassic);
	}
      else
	{
	  list = new Array(optRotativo, optCredNormal, optCredEspec, optCredAvulso);
	}
    }
	else
	{
		if( ( productCode == "RCET" ) || ( productCode == "ROT0" ) ||
				( productCode == "ROT1" ) || ( productCode == "ROT2" ) ||
				( productCode == "ROT6" ) || ( productCode == "ROT9" ) )
		{
			list = new Array(optRotativo);
		}
		else if( productCode =="CREF" )
		{
			list = new Array(optRotParcelado);
		}
		else if( ( productCode == "CREN" ) || ( productCode == "CRES" ) ||
						 ( productCode == "SYSN" ) || ( productCode == "SYSS" ) )
		{
			list = new Array(optCredNormal, optCredNet);
		}
		else if( ( productCode == "CRET" ) || ( productCode == "CRST" ) ||
						 ( productCode == "SYSE" ) || ( productCode == "SYSC" ) ||
						 ( productCode == "CENT" ) || ( productCode == "CSET" ) )
		{
			list = new Array(optCrediarioEntra, optCredNetEntra);
		}
		else if (productCode == "PPSI")
		{
		list = new Array(optWebSaquePPS);
		}
		else if( ( productCode == "0000" ) || ( productCode == "    " ) )
		{
			list = new Array();
		}
		else
		{
			list = new Array(optRotativo, optRotParcelado, optCredNormal, optCredEspec, optPreDatadoUnico,
							 optPreDatadoParce, optCrediarioEntra, optCredNet, optCredNetEntra);
		}
  }

  buildGenericSelect(name, list, "", option);
}


function buildCompTypeSelect(name, aux) {
  var list = new Array(
	     new Option("Holerit/Carteira Professional"     , "1")
		,new Option("Comprovante INSS"                  , "2")
		,new Option("Pr&oacute;-labore"                 , "3")
		,new Option("Notifica&ccedil;&atilde;o IR"      , "4")
		,new Option("Folha Cheque"                      , "5")
		,new Option("Outros"                            , "6")
	);
  buildGenericSelect(name, list, "", aux);
}


/**
 * Monta um combobox do nivel de comprovante
 * @param {String}	campo  - combobox (elemento html) a ser montado
 * @param {boolean}	hasSpouse  - indica se tem ou nao conjuge
 * @param {String}	opcaoSelecionada  - opcao a ser selecionada no combobox
 * @param {Integer}	tipoCadastro  - null - default
 *                                 - 1    - Cadastro para propostas de Aplicativos Integrados
 *                                 - 2    - Cadastro para propostas do Portal
 * @see #buildOpGroupSelect
 */
function buildProfVouLevelSelect(campo, hasSpouse, opcaoSelecionada, tipoCadastro) {
	
	//monta a lista com o optGroup
	buildOpGroupSelect(campo, getVoucherLevelArray(hasSpouse, tipoCadastro), opcaoSelecionada);
}

/**
 * Monta um combobox com n optGroup
 * @param {String}	campo - combobox (elemento html) a ser montado
 * @param {boolean}	options - array com as opcoes a serem incluidas na lista
 * @param {String}	option - opcao a ser selecionada na lista
 *
 * @see #addArray - para criar a lista de opcoes
 */
function buildOpGroupSelect(campo, options, option) {
	
	for (i = 0; i < options.length; i++) {
		var texto = options[i][0];
		var valor = options[i][1];
		if(typeof valor == 'object') {
			var oGroup = buildOpGroup(texto, valor, option);
			//Apenda o grupo no item html
			campo.appendChild(oGroup);
			
		} else {
			var oOption = document.createElement('option');
			oOption.value     = valor;
			oOption.innerHTML = texto;
			
			//seta a opcao selecionada
			if(oOption.value == option){
				oOption.selected = true;
			}
			
			//Apenda a opcao no item html
			campo.appendChild(oOption);
		}
	}
	
}

/**
 * Cria um elemento optGroup
 * @param {String}	optLabel - nome do grupo
 * @param {array}	optList - array de opcoes
 * @param {String}	optOptionSelected - opcao a ser selecionada
 *
 * @return oGroup - objeto de Grupo
 * @type [HTML Element]
 *
 * @see #addArray - para criar a lista de opcoes
 */
function buildOpGroup(optLabel, optList, optOptionSelected) {

	// cria novo grupo de opcoes
	var oGroup = document.createElement('optgroup');
	oGroup.label = HtmlDecode(optLabel);
	
	var k=0;
	for (var k = 0; k < optList.length; k++) {
		var texto = optList[k][0];
		var valor = optList[k][1];
		
		// cria nova option
		var oOption = document.createElement('option');
		oOption.value     = valor;
		oOption.innerHTML = texto;
		
		//seta a opcao selecionada
		if(oOption.value == optOptionSelected){
			oOption.selected = true;
		}
		
		//Apenda a opcao no grupo
		oGroup.appendChild(oOption);
	}
	
	return oGroup;
}

/**
 * Adiciona uma valor em um array
 * @param {array}	array - array de opcoes
 * @param {String}	texto - texto do combobox
 * @param {String}	valor - valor do combobox
 *
 */
function addArray(array, texto, valor) {
	var posiFinal = array.length;
	array[posiFinal] = new Array(2);
	array[posiFinal][0] = texto;
	array[posiFinal][1] = valor;
}

/**
 * Sub lista de opcoes do Nivel de Comprovante [NAO FIRME]
 *
 * @return subNivelComprovante - objeto com as opcoes
 * @type array
 *
 * @see #addArray - para criar a lista de opcoes
 */
function getVoucherLevelNotFirmArray() {
	var subNivelComprovante = new Array();
	addArray(subNivelComprovante, "Cart&atilde;o de Cr&eacute;dito - Local/Nacional", "F");
	addArray(subNivelComprovante, "Cart&atilde;o de Cr&eacute;dito - Internacional", "G");
	addArray(subNivelComprovante, "Cart&atilde;o de Cr&eacute;dito - Gold", "H");
	addArray(subNivelComprovante, "Cart&atilde;o de Cr&eacute;dito - Platinum", "I");
	
	addArray(subNivelComprovante, "Cart&atilde;o de Cr&eacute;dito \"VIP\"", "J");
	
	addArray(subNivelComprovante, "Cart. de D&eacute;bito e Cheque - Conta Especial", "K");
	addArray(subNivelComprovante, "Cart. de D&eacute;bito e Cheque - Conta ou cart&atilde;o comum", "L");
	addArray(subNivelComprovante, "Cart. de D&eacute;bito e Cheque - Conta ou \"VIP\"", "M");

	return subNivelComprovante;
}

/**
 * Sub lista de opcoes do Nivel de Comprovante [COMPLETO + HOLERITE]
 *
 * @return subNivelComprovante - objeto com as opcoes
 * @type array
 *
 * @see #addArray - para criar a lista de opcoes
 */
function getVoucherLevelHoleriteArray() {
	var subNivelComprovante = new Array();
	addArray(subNivelComprovante, "Holerite", "A");
	addArray(subNivelComprovante, "Declara&ccedil;&atilde;o de IR + Recibo de entrega", "B");
	addArray(subNivelComprovante, "Comprovante INSS", "C");
	/* Retirado devido a solicitacao de homologacao - 31/Jul/07
	addArray(subNivelComprovante, "Pr&oacute;-Labore + Extrato c/c", "D");*/
	addArray(subNivelComprovante, "Carteira Profissional", "E");
	
	return subNivelComprovante;
}

/**
 * Sub lista de opcoes do Nivel de Comprovante [IDENTIDADE E RESIDENCIA]
 *
 * @return subNivelComprovante - objeto com as opcoes
 * @type array
 *
 * @see #addArray - para criar a lista de opcoes
 */
function getVoucherLevelIdentity() {
	var subNivelComprovante = new Array();
	addArray(subNivelComprovante, "Doc. de identifica&ccedil;&atilde;o, CPF e Comp. de resid&ecirc;ncia", "N");

	return subNivelComprovante;

}

/**
 * Sub lista de opcoes do Nivel de Comprovante [SOMENTE IDENTIFICACAO]
 *
 * @return subNivelComprovante - objeto com as opcoes
 * @type array
 *
 * @see #addArray - para criar a lista de opcoes
 */
function getVoucherLevelIdentityOnly() {
	var subNivelComprovante = new Array();
	addArray(subNivelComprovante, "Documento de identifica&ccedil;&atilde;o e CPF", "O");

	return subNivelComprovante;
}

/**
 * Opcoes do Nivel de Comprovante
 *
 * @return nivelComprovante - objeto com as opcoes
 * @type array
 *
 * @see #addArray - para criar a lista de opcoes
 */
function getVoucherLevelArray(hasSpouse, tipoCadastro) {

	var nivelComprovante = new Array();
	
	addArray(nivelComprovante, "---", " ");
	
	switch(tipoCadastro) {
	
		case 1: //cadastramento de parceiro integrado
			addArray(nivelComprovante, "Somente Identifica&ccedil;&atilde;o", getVoucherLevelIdentityOnly());
			break;
		case 2: //cadastramento do portal
			addArray(nivelComprovante, "Completo + Holerite", getVoucherLevelHoleriteArray());
			break;
		default: //cadastramento padrao
			addArray(nivelComprovante, "1.Completo + Holerite", getVoucherLevelHoleriteArray());
			
			addArray(nivelComprovante, "2.Completo + Cart&atilde;o/cheque", getVoucherLevelNotFirmArray());
				
			if(!hasSpouse) {
				addArray(nivelComprovante, "3.Identifica&ccedil;&atilde;o + Comprovante e Resid&ecirc;ncia", getVoucherLevelIdentity());
			}
				
			addArray(nivelComprovante, "4.Somente Identifica&ccedil;&atilde;o", getVoucherLevelIdentityOnly());
		
			break;
	}
	
	return nivelComprovante;
}


