1,
'style' => "width: 200px",
'mode' => "POPULATE_ON_LOAD"
);
$extractParams = array(
'name',
'ajaxClass',
'ajaxMethod',
'methodParam',
'minLength',
'idValue',
'textValue',
'style',
'mode'
);
/* verifica se todos os parâmetros obrigatórios foram passados */
foreach ($requiredParams as $required)
if (!array_key_exists($required, $params) || (empty($params[$required])))
$smarty->trigger_error("[wf_autocomplete_input] missing required parameter(s): $required", E_USER_ERROR);
/* atribui valores default para os parâmetros não passados */
foreach ($defaultValues as $key => $value)
if (!isset($params[$key]))
$params[$key] = $value;
/* extrai alguns parâmetros da matriz de parâmetros */
foreach ($extractParams as $extract)
$$extract = $params[$extract];
/* parâmetros extras são "acumulados" em uma única variável */
$extraParams = array();
foreach ($params as $key => $value_params)
if (!in_array($key, $extractParams))
$extraParams[$key] = $value_params;
$name_input = 'input' . $name;
$name_list = 'list' . $name;
$name_response = 'response' . $name;
/* se parâmetro for um array "joga" para o javascript como um objeto JSON */
if (is_array($methodParam)){
$methodParam = json_encode($methodParam);
} else {
$sep = "'"; // se não for um objeto passa parâmetro entre aspas
}
/* se o componente for do tipo padrão (POPULATE_ON_LOAD) */
if ($mode == 'POPULATE_ON_LOAD'){
// Se o usuário necessitar utilizar os parâmetros onfocus ou onblur, concatena as chamadas
// passadas na declaração do componente com as necessárias para o funcionamento do plugin.
// Outros parâmetros são apenas repassados para o campo input.
$onfocus = "checkDataLoaded('$name');" . $extraParams['onfocus'];
unset($extraParams['onfocus']);
$onblur = "setTimeout('selectAutocompleteElement(\'$name\')', 500);" . $extraParams['onblur'];
unset($extraParams['onblur']);
$extra_input = "";
foreach($extraParams AS $key => $value){
$extra_input .= " $key=$value ";
}
$inputElement = <<