public function startRender(__IComponent &$component)
    {
        $component_id = $component->getId();
        $properties = array();
        $component_properties = $component->getProperties();
        foreach ($component_properties as $property => $value) {
            $property = strtolower($property);
            if ($property != 'runat') {
                $properties[] = $property . '="' . $value . '"';
            }
        }
        if (!key_exists('TYPE', $component_properties)) {
            $properties[] = 'type="text"';
        }
        $properties[] = 'id="' . $component_id . '"';
        $properties[] = 'name="' . $component->getName() . '"';
        $value = $component->getValue();
        $example_value = $component->getExampleValue();
        if (!empty($value)) {
            $properties[] = 'value="' . htmlentities($value) . '"';
        } else {
            if (!empty($example_value)) {
                $properties[] = 'value="' . htmlentities($example_value) . '"';
            }
        }
        if ($component->getVisible() == false) {
            $properties[] = 'style = "display : none;"';
        }
        $return_value = '<input ' . implode(' ', $properties) . '>';
        if (!empty($example_value)) {
            if (__ResponseWriterManager::getInstance()->hasResponseWriter('examplevalues')) {
                $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('examplevalues');
            } else {
                $jod_response_writer = new __JavascriptOnDemandResponseWriter('examplevalues');
                $js_code = <<<CODE
function hideExampleValue(event){
    var formfield = Event.element(event);
    var exampleValue = (\$A(arguments)).last();
    if (formfield.value == exampleValue) {
        formfield.value = "";
    }
}     
CODE;
                $jod_response_writer->addJsCode($js_code);
                $jod_response_writer->setLoadAfterDomLoaded(true);
                $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
                $javascript_rw->addResponseWriter($jod_response_writer);
            }
            $js_code = "Event.observe('{$component_id}', 'focus', hideExampleValue.bindAsEventListener(\$({$component_id}), '{$example_value}'));\n";
            $jod_response_writer->addJsCode($js_code);
        }
        return $return_value;
    }
 public function endRender()
 {
     parent::endRender();
     $async_message = __ClientNotificator::getInstance()->getStartupNotification($this->_view_code);
     if ($async_message != null && ($async_message->getHeader()->getStatus() != __AsyncMessageHeader::ASYNC_MESSAGE_STATUS_OK || $async_message->hasPayload())) {
         $response_writer_manager = __ResponseWriterManager::getInstance();
         if ($response_writer_manager->hasResponseWriter('javascript')) {
             $javascript_response_writer = $response_writer_manager->getResponseWriter('javascript');
         } else {
             $javascript_response_writer = new __JavascriptOnDemandResponseWriter('javascript');
             $response_writer_manager->addResponseWriter($javascript_response_writer);
         }
         if ($response_writer_manager->hasResponseWriter('setup-client-view')) {
             $setup_client_view_rw = $response_writer_manager->getResponseWriter('setup-client-view');
         } else {
             $setup_client_view_rw = new __JavascriptOnDemandResponseWriter('setup-client-view');
             $setup_client_view_rw->setLoadAfterDomLoaded(false);
             $javascript_response_writer->addResponseWriter($setup_client_view_rw);
         }
         $javascript_response_writer->addJsCode('__MessageProcessor.process(Object.extend(new __Message(), ' . $async_message->toJson() . '));', __JavascriptOnDemandResponseWriter::JS_CODE_POSITION_BOTTOM);
     }
 }
    public function startRender(__IComponent &$component)
    {
        $component_id = $component->getId();
        if (__ResponseWriterManager::getInstance()->hasResponseWriter('uploadfile')) {
            $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('uploadfile');
        } else {
            $jod_response_writer = new __JavascriptOnDemandResponseWriter('uploadfile');
            $jod_response_writer->setLoadAfterDomLoaded(true);
            $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
            $javascript_rw->addResponseWriter($jod_response_writer);
        }
        $jod_response_writer->addJsCode($component_id . ' = new __FileUploader($("' . $component_id . '"));' . "\n");
        if ($component->getStatus() == __IUploaderComponent::UPLOAD_STATUS_DONE) {
            $filename = $component->getFilename();
            $icon = $component->getIcon();
            if ($icon != null) {
                $filename = "<img src='{$icon}' width='32' height='32' valign='absmiddle'>&nbsp;" . $filename;
            }
            $jod_response_writer->addJsCode($component_id . '.renderAsUploaded("' . $filename . '");');
        }
        $properties = array();
        $component_properties = $component->getProperties();
        foreach ($component_properties as $property => $value) {
            $properties[] = $property . '="' . $value . '"';
        }
        $properties[] = 'type = "file"';
        $properties[] = 'id = "' . $component_id . '"';
        $properties[] = 'name = "' . $component_id . '"';
        if ($component->getVisible() == false) {
            $properties[] = 'style = "display : none;"';
        }
        $input_file_properties = implode(' ', $properties);
        $return_value = <<<CODE
    <input type="file" {$input_file_properties}>
CODE;
        return $return_value;
    }
    public function startRender(__IComponent &$component)
    {
        $component_id = $component->getId();
        $component_name = $component->getName();
        if (!__ResponseWriterManager::getInstance()->hasResponseWriter('remoteservicedeclarations_' . $component_name)) {
            $send_event_parameters = array();
            $send_event_parameters[] = "'remotecall'";
            $send_event_parameters[] = "arg";
            $send_event_parameters[] = "'{$component_id}'";
            $send_event_parameters = join(', ', $send_event_parameters);
            //generate the remote service function:
            $js_code = <<<CODESET
{$component_name} = function() {
    var arg = \$A({$component_name}.arguments);
    (__ClientEventHandler.getInstance()).sendEvent({$send_event_parameters});   
};
CODESET;
            $jod_response_writer2 = new __JavascriptOnDemandResponseWriter('remoteservicedeclarations_' . $component_name);
            $jod_response_writer2->addJsCode($js_code);
            $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
            $javascript_rw->addResponseWriter($jod_response_writer2);
            //generate the callback code (if applicable)
            $callback = $component->getClientResponseCallback();
            if ($callback != null) {
                $js_callback_code = "{$component_id} = new __ResponseCallbackHandler({$callback});";
                if (__ResponseWriterManager::getInstance()->hasResponseWriter('remoteservicecallback')) {
                    $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('remoteservicecallback');
                } else {
                    $jod_response_writer = new __JavascriptOnDemandResponseWriter('remoteservicecallback');
                }
                $jod_response_writer->addJsCode($js_callback_code);
                $jod_response_writer->setLoadAfterDomLoaded(true);
                $javascript_rw->addResponseWriter($jod_response_writer);
            }
        }
    }