function renderCrFormFields($form)
{
    $CI =& get_instance();
    $aFields = array();
    $formErrors = array_keys(validation_array_errors());
    foreach ($form['fields'] as $name => $field) {
        $hasError = null;
        if (in_array($name, $formErrors)) {
            $hasError = 'has-error';
        }
        $properties = array('name' => $name, 'value' => element('value', $field), 'class' => 'form-control');
        if (element('disabled', $field) == true) {
            $properties += array('disabled' => 'disabled');
        }
        if (element('placeholder', $field) != '') {
            $properties += array('placeholder' => $field['placeholder']);
        }
        $sField = '
			<fieldset class="form-group ' . $hasError . '">
				' . form_label(element('label', $field), null, array('class' => 'col-xs-12 col-sm-3 col-md-3 col-lg-3 control-label')) . '
				<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> %s </div>
			</fieldset>';
        switch ($field['type']) {
            case 'hidden':
                $aFields[] = form_hidden($name, $field['value']);
                break;
            case 'text':
            case 'numeric':
            case 'typeahead':
                if ($field['type'] == 'typeahead') {
                    unset($properties['value']);
                }
                $aFields[] = sprintf($sField, form_input($properties));
                break;
            case 'date':
            case 'datetime':
                $aFields[] = sprintf($sField, '<div class="input-group" style="width:1px">
						' . form_input(array('name' => $name, 'value' => element('value', $field), 'class' => 'form-control', 'size' => $field['type'] == 'datetime' ? 18 : 9, 'placeholder' => lang('DATE_FORMAT') . ($field['type'] == 'datetime' ? ' hh:mm:ss' : ''))) . '
						<span class="input-group-addon"><i class="glyphicon glyphicon-remove fa fa-times"></i></span>
						<span class="input-group-addon"><i class="glyphicon glyphicon-th icon-th fa fa-th"></i></span>
					</div>');
                break;
            case 'password':
                $aFields[] = sprintf($sField, form_password(array('name' => $name, 'value' => element('value', $field), 'class' => 'form-control')));
                break;
            case 'textarea':
                $aFields[] = sprintf($sField, form_textarea($name, element('value', $field), 'class="form-control"'));
                break;
            case 'dropdown':
                $source = element('source', $field, array());
                $source = sourceToDropdown($source, element('appendNullOption', $field));
                if (element('multiple', $field) == true) {
                    $properties += array('multiple' => 'multiple');
                }
                $aFields[] = sprintf($sField, form_dropdown($name, $source, element('value', $field, null), _attributes_to_string($properties)));
                break;
            case 'groupCheckBox':
                $showId = element('showId', $field, false);
                $sTmp = '<ul class="groupCheckBox" name="' . $name . '"> <li><input type="text" style="display:none" /> </li>';
                foreach ($field['source'] as $item) {
                    $sTmp .= '<li>
							<div class="checkbox">
								 <label>' . form_checkbox(null, $item['id'], in_array($item['id'], $field['value'])) . $item['text'] . ($showId == true ? ' - ' . $item['id'] : '') . '
								</label>
							</div>
						</li>';
                }
                $sTmp .= '</ul>';
                $aFields[] = sprintf($sField, $sTmp);
                break;
            case 'checkbox':
                $className = '';
                if (element('hideOffset', $field) == true) {
                    $className = ' hide ';
                }
                $aFields[] = '
					<fieldset class="form-group">
						<div class="' . $className . '  hidden-xs col-sm-3 col-md-3 col-lg-3 "> </div>
						<div class="col-xs-12 col-sm-9 col-md-9  col-lg-9 ">
							<div class="checkbox" >
								<label>
									' . form_checkbox($name, 'on', $field['checked']) . ' ' . element('label', $field) . '
								</label>
							</div>
						</div>
					</fieldset>';
                break;
            case 'gallery':
                $aFields[] = sprintf($sField, '
						<div id="' . $name . '" data-toggle="modal-gallery" data-target="#modal-gallery" class="gallery well" >
							<button type="button" class="btn btn-success btn-sm btnEditPhotos fileinput-button">
								<i class="fa fa-picture-o" ></i>
								' . lang('Edit pictures') . '
							</button>
							<div class="thumbnails" ></div>
						</div>
					');
                break;
            case 'subform':
                $aFields[] = sprintf($sField, '
					<div name="' . $name . '" class="subform ">
						<div class="alert alert-warning">
							<i class="fa fa-spinner fa-spin fa-lg"></i>
							<small>' . lang('loading ...') . '</small>
						</div>
					</div>
				');
                break;
            case 'tree':
                $aFields[] = '<fieldset class="form-group tree">' . renderCrFormTree($field['source'], $field['value']) . '</fieldset>';
                break;
            case 'link':
                $sField = '
					<fieldset class="form-group" >
						' . form_label('', null, array('class' => 'hidden-xs col-sm-3 col-md-3 col-lg-3 control-label')) . '
						<div class="col-xs-12 col-sm-9 col-md-9 col-lg-9"> %s </div>
					</fieldset>';
                $aFields[] = sprintf($sField, anchor($field['value'], $field['label']));
                break;
            case 'raty':
                $aFields[] = sprintf($sField, '<div class="raty" name="' . $name . '" />');
                break;
            case 'upload':
                $aFields[] = sprintf($sField, '
					<div name="' . $name . '"> </div> ');
                break;
            case 'html':
                $aFields[] = $field['value'];
                break;
        }
    }
    return $aFields;
}
function loadViewAjax($code, $result = null)
{
    $CI =& get_instance();
    if ($result == null) {
        $result = array();
    }
    if ($code != true && is_array($result)) {
        $result['formErrors'] = validation_array_errors();
    }
    return $CI->load->view('json', array('code' => $code, 'result' => $result));
}