function display($field, $value, $map, $inside, $options = '', $test = false, $allFields = null, $allValues = null){
$string = '';
if(!empty($field->field_value) && !is_array($field->field_value)){
$field->field_value = $this->parent->explodeValues($field->field_value);
}
if(empty($field->field_value) || !count($field->field_value)){
return '<input type="hidden" name="'.$map.'" value="" />';
}
if($this->type == "multiple"){
$string.= '<input type="hidden" name="'.$map.'" value=" " />';
$map.='[]';
$arg = 'multiple="multiple"';
if(!empty($field->field_options['size'])) $arg .= ' size="'.intval($field->field_options['size']).'"';
}else{
$arg = 'size="1"';
if(is_string($value)&& empty($value) && !empty($field->field_value)){
$found = false;
$first = false;
foreach($field->field_value as $oneValue => $title){
if($first===false){
$first=$oneValue;
}
if($oneValue==$value){
$found = true;
break;
}
}
//set default value for IE
if(!$found){
$value = $first;
}
}
}
$string .= '<select id="'.$this->prefix.$field->field_namekey.$this->suffix.'" name="'.$map.'" '.$arg.$options.'>';
if(empty($field->field_value))
return $string.'</select>';
$app = JFactory::getApplication();
$admin = $app->isAdmin();
foreach($field->field_value as $oneValue => $title){
if(isset($field->field_default) && array_key_exists($field->field_default, $field->field_value)){
if($oneValue === $field->field_default){
$selected = (is_string($field->field_default) && $oneValue === $field->field_default) || is_array($field->field_default) && in_array($oneValue,$field->field_default) ? 'selected="selected" ' : '';
}else{
$selected = ((int)$title->disabled && !$admin) ? 'disabled="disabled" ' : '';
}
}else{
$selected = ((int)$title->disabled && !$admin) ? 'disabled="disabled" ' : '';
$selected .= ((is_numeric($value) && is_numeric($oneValue) AND $oneValue == $value) || (is_string($value) && $oneValue === $value) || is_array($value) && in_array($oneValue,$value)) ? 'selected="selected" ' : '';
}
$id = $this->prefix.$field->field_namekey.$this->suffix.'_'.$oneValue;
$string .= '<option value="'.$oneValue.'" id="'.$id.'" '.$selected.'>'.$this->trans($title->value).'</option>';
}
$string .= '</select>';
return $string;
}
function display($field, $value, $map, $inside, $options = '', $test = false, $allFields = null, $allValues = null){
// Set default zone depending on the geolocation plugin
$currentZoneId = hikashop_getZone()?hikashop_getZone():'';
if(!empty($currentZoneId) && JFactory::getApplication()->isSite()){
$zoneClass = hikashop_get('class.zone');
$currentZone = $zoneClass->getZoneParents($currentZoneId);
foreach($currentZone as $currentZoneInfos){
if(preg_match('/country/',$currentZoneInfos)){
$defaultCountry = $currentZoneInfos;
}
}
}
if($field->field_options['zone_type']=='country'){
if(isset($defaultCountry)){
$field->field_default = $defaultCountry;
}
$stateNamekey = str_replace('country','state',$field->field_namekey);
if(!empty($allFields)) {
foreach($allFields as &$f) {
if(!empty($f->field_options['zone_type']) && $f->field_options['zone_type'] == 'state') {
$stateNamekey = $f->field_namekey;
break;
}
}
}
$stateId = str_replace(
array('[',']',$field->field_namekey),
array('_','',$stateNamekey),
$map
);
$changeJs = 'window.hikashop.changeState(this,\''.$stateId.'\',\''.$field->field_url.'field_type='.$field->field_table.'&field_id='.$stateId.'&field_namekey='.$stateNamekey.'&namekey=\'+this.value);';
if(!empty($options) && stripos($options,'onchange="')!==false){
$options = preg_replace('#onchange="#i','onchange="'.$changeJs,$options);
}else{
$options = ' onchange="'.$changeJs.'"';
}
if($allFields == null || $allValues == null) {
$doc = JFactory::getDocument();
$js = 'do_nothing( function() {
var el = document.getElementById(\''.$this->prefix.$field->field_namekey.$this->suffix.'\');
window.hikashop.changeState(el,\''.$stateId.'\',\''.$field->field_url.'field_type='.$field->field_table.'&field_id='.$stateId.'&field_namekey='.$stateNamekey.'&namekey=\'+el.value);
});';
$doc->addScriptDeclaration($js);
}
} elseif($field->field_options['zone_type']=='state') {
$stateId = str_replace(array('[',']'),array('_',''),$map);
$dropdown = '';
if($allFields != null) {
$country = null;
foreach($allFields as $f) {
if($f->field_type=='zone' && !empty($f->field_options['zone_type']) && $f->field_options['zone_type']=='country') {
$key = $f->field_namekey;
if(!empty($allValues->$key)) {
$country = $allValues->$key;
} else {
$country = $f->field_default;
}
break;
}
}
if(empty($country)) {
$address_country_field = $this->parent->get(14); //14 = id of country field
if(!empty($address_country_field) && $address_country_field->field_type=='zone' && !empty($address_country_field->field_options['zone_type']) && $address_country_field->field_options['zone_type']=='country' && !empty($address_country_field->field_default)) {
$country = $address_country_field->field_default;
}
}
if(isset($defaultCountry)){
$country = $defaultCountry;
}
if(!empty($country)) {
$countryType = hikashop_get('type.country');
$dropdown = $countryType->displayStateDropDown($country, $stateId, $map, '', $value);
}
}
return '<span id="'.$stateId.'_container">'.$dropdown.'</span>'.
'<input type="hidden" id="'.$stateId.'_default_value" name="'.$stateId.'_default_value" value="'.$value.'"/>';
}
return parent::display($field,$value,$map,$inside,$options,$test,$allFields,$allValues);
}