protected function parseValue($value, $type)
 {
     $code = null;
     $suggest = false;
     if (is_array($value)) {
         $code = ifset($value['code']);
         $value = trim(ifset($value['value']));
         //rgb(r,g,b) #ABC #AABBCC;
         if ($code === '') {
             $code = shopColorValue::getCode($value);
         } elseif (preg_match('@^#?([0-9A-F]{3}|[0-9A-F]{6})@ui', $code)) {
             if (strpos($code, '#') === 0) {
                 $code = substr($code, 1);
             }
             if ($parsed = sscanf(strtoupper($code), '%03X%03X')) {
                 if ($parsed[1] === null) {
                     $code = (0xf00 & $parsed[0]) << 12;
                     $code |= (0xff0 & $parsed[0]) << 8;
                     $code |= (0xff & $parsed[0]) << 4;
                     $code |= 0xf & $parsed[0];
                 } else {
                     $code = $parsed[0] << 12 | $parsed[1];
                 }
             } else {
                 $code = null;
             }
         } elseif (strpos('rgb', $code) === 0) {
             //TODO
         } else {
             $code = intval($code);
         }
         if ($value === '' && $code !== null) {
             $suggest = true;
             $value = shopColorValue::getName($code);
         }
     } else {
         $value = trim($value);
         if (preg_match('@^#?(([0-9A-F]{3})|([0-9A-F]{6}))$@ui', $value, $matches)) {
             if ($matches[2]) {
                 $value = sscanf(strtoupper($matches[2]), '%03X');
                 $code = reset($value);
             } elseif ($matches[3]) {
                 $value = sscanf(strtoupper($matches[3]), '%06X');
                 $code = reset($value);
             } else {
                 $code = 0;
             }
             $value = shopColorValue::getName($code);
         } else {
             $suggest = true;
             $code = shopColorValue::getCode($value);
         }
     }
     $data = array('value' => $value, 'search_value' => $value, 'suggest' => $suggest);
     if ($code !== null) {
         $data['code'] = $code;
     }
     return $data;
 }
 public function execute()
 {
     if (!$this->getUser()->getRights('shop', 'settings')) {
         throw new waRightsException(_w('Access denied'));
     }
     if ($code = waRequest::get('code')) {
         $this->response['name'] = shopColorValue::getName($code);
     } elseif ($name = waRequest::get('name')) {
         $this->response['code'] = shopColorValue::getCode($name);
     }
 }