public function endRender(__IComponent &$component)
    {
        $component_id = $component->getId();
        $return_value = $this->_component_writer->endRender($component);
        $place_after_element = $component->placeAfterElement;
        if (!empty($place_after_element)) {
            $jod_response_writer = new __JavascriptOnDemandResponseWriter('place-after-element' . $component_id);
            $jod_response_writer->addJsCode("var {$component_id} = \$('{$component_id}').remove();\n\n            {$component_id}.insert({$place_after_element});\n");
            $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
            $javascript_rw->addResponseWriter($jod_response_writer);
        }
        $waiting_components = $component->waitingComponents;
        if (!empty($waiting_components)) {
            if (__ResponseWriterManager::getInstance()->hasResponseWriter('waiting-components')) {
                $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('waiting-components');
            } else {
                $jod_response_writer = new __JavascriptOnDemandResponseWriter('waiting-components');
                $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
                $javascript_rw->addResponseWriter($jod_response_writer);
            }
            $waiting_components_array = preg_split('/,/', $waiting_components);
            foreach ($waiting_components_array as $waiting_component_name) {
                $component_handler = __ComponentHandlerManager::getInstance()->getComponentHandler($component->getViewCode());
                $waiting_component = $component_handler->getComponent($waiting_component_name);
                $waiting_component_id = $waiting_component->getId();
                $js_code = <<<CODE
(__ProgressBroadcaster.getInstance()).setWaitingDependence("{$waiting_component_id}", "{$component_id}");                
CODE;
                $jod_response_writer->addJsCode($js_code);
            }
        }
        return $return_value;
    }
    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 startRender()
 {
     if (__FrontController::getInstance()->getRequestType() != REQUEST_TYPE_XMLHTTP) {
         if (__ApplicationContext::getInstance()->hasProperty('INCLUDE_LION_JS')) {
             $include_lion_js = __ApplicationContext::getInstance()->getPropertyContent('INCLUDE_LION_JS');
         } else {
             $include_lion_js = true;
         }
         if ($include_lion_js) {
             $local_js_lib = __ApplicationContext::getInstance()->getPropertyContent('JS_LIB_DIR');
             $lion_js_file = __UrlHelper::resolveUrl(__UrlHelper::glueUrlParts($local_js_lib, 'lion.js'));
             __FrontController::getInstance()->getResponse()->prependContent('<script language="javascript" type="text/javascript" src="' . $lion_js_file . '"></script>' . "\n", 'lion-js');
         }
     }
     $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 (!$javascript_response_writer->hasResponseWriter('setup-client-event-handler')) {
         $setup_client_event_handler_rw = new __JavascriptOnDemandResponseWriter('setup-client-event-handler');
         $js_code = "\n" . '(__ClientEventHandler.getInstance()).setCode("' . __CurrentContext::getInstance()->getId() . '");' . "\n";
         if (__Lion::getInstance()->getRuntimeDirectives()->getDirective('DEBUG_MODE')) {
             $js_code .= "(__ClientEventHandler.getInstance()).setDebug(true);\n";
             if (__ApplicationContext::getInstance()->getPropertyContent('DEBUG_AJAX_CALLS') == true) {
                 if (strtoupper(__ApplicationContext::getInstance()->getPropertyContent('DEBUGGER')) == 'ZEND') {
                     $client_ip = $_SERVER['REMOTE_ADDR'];
                     $debug_port = __ApplicationContext::getInstance()->getPropertyContent('ZEND_DEBUG_PORT');
                     $debug_url = 'index.ajax?' . 'start_debug=1&debug_port=' . $debug_port . '&debug_fastfile=1&debug_host=' . $client_ip . '&send_sess_end=1&debug_stop=1&debug_url=1&debug_new_session=1&no_remote=1';
                     $js_code .= "(__ClientEventHandler.getInstance()).setUrl('" . $debug_url . "');\n";
                 }
             }
         }
         if (!__FrontController::getInstance() instanceof __ComponentLazyLoaderFrontController && __FrontController::getInstance()->getRequestType() == REQUEST_TYPE_HTTP) {
             $url = __FrontController::getInstance()->getRequest()->getUrl();
             $encoded_url = base64_encode(serialize($url));
             $js_code .= "(__ClientEventHandler.getInstance()).setViewCode('" . $encoded_url . "');\n";
             $flow_scope = __ApplicationContext::getInstance()->getFlowScope();
             if ($flow_scope != null) {
                 $js_code .= "(__ClientEventHandler.getInstance()).setFlowExecutionKey('" . $flow_scope->getId() . "');\n";
             }
         }
         $setup_client_event_handler_rw->addJsCode($js_code);
         $javascript_response_writer->addResponseWriter($setup_client_event_handler_rw);
     }
     parent::startRender();
 }
    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);
            }
        }
    }
    public function endRender(__IComponent &$component)
    {
        $component_id = $component->getId();
        $return_value = $this->_component_writer->endRender($component);
        $context_help = $component->getContextHelp();
        if (!empty($context_help)) {
            if (__ResponseWriterManager::getInstance()->hasResponseWriter('formcontexthelp')) {
                $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('formcontexthelp');
            } else {
                $jod_response_writer = new __JavascriptOnDemandResponseWriter('formcontexthelp');
                $jod_response_writer->addCssFileRef('formcontexthelp/formcontexthelp.css');
                $jod_response_writer->addJsFileRef('formcontexthelp/formcontexthelp.js');
                $jod_response_writer->addLoadCheckingVariable('prepareInputsForHints');
                $jod_response_writer->addJsCode("\nprepareInputsForHints();\n");
                $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
                $javascript_rw->addResponseWriter($jod_response_writer);
            }
            $return_value .= '<span id="' . $component_id . '_contextHelp" class="hint" style="display: none;">' . $context_help . '<span id="' . $component_id . '_contextHelpPointer" class="hint-pointer" style="display: none;">&nbsp;</span></span>';
        }
        $example = str_replace("'", "\\'", $component->getExample());
        if (!empty($example)) {
            if (__ResponseWriterManager::getInstance()->hasResponseWriter('inputexamples')) {
                $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('inputexamples');
            } else {
                $jod_response_writer = new __JavascriptOnDemandResponseWriter('inputexamples');
                $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
                $javascript_rw->addResponseWriter($jod_response_writer);
                $code = <<<CODESET
                
window['showAllExamples'] = function() {
    \$\$('input').each(function(inputElement) {
        showExampleValueOnInput(inputElement);
    });
};
           
var showExampleValueOnInput = function(input) {
  if(input['exampleValue']) {
      input.onfocus = function () {
          if(input.exampleValue == input.value) {
              if(input.originalType == 'password') {
                  input.type = 'password';
              }
              input.value = '';
              input.style.color = '';
          }
      }
      input.onblur = function () {
          if(input.value == '') {
              if(input.type == 'password') {
                  input.originalType = 'password';
                  input.type = 'text';
              }
              input.value = input.exampleValue;
              input.style.color = '#858585';
          }
      }
      
      if(input.value == '') {
          if(input.type == 'password') {
              input.originalType = 'password';
              input.type = 'text';
          }
          input.value = input.exampleValue;
      }
      if(input.value == input.exampleValue) {
          if(input.type == 'password') {
              input.originalType = 'password';
              input.type = 'text';
          }
          input.style.color = '#858585';
      }
  }  
};
CODESET;
                $jod_response_writer->addJsCode($code);
            }
            $code = <<<CODESET
var {$component_id} = \$('{$component_id}'); 
{$component_id}.exampleValue = '{$example}';
showExampleValueOnInput({$component_id});
CODESET;
            $jod_response_writer->addJsCode($code);
        }
        $mask = $component->getMask();
        if (!empty($mask)) {
            if (__ResponseWriterManager::getInstance()->hasResponseWriter('inputmask')) {
                $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('inputmask');
            } else {
                $jod_response_writer = new __JavascriptOnDemandResponseWriter('inputmask');
                $jod_response_writer->addJsFileRef('inputmask/inputmask.js');
                $jod_response_writer->addLoadCheckingVariable('__InputMask');
                $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
                $javascript_rw->addResponseWriter($jod_response_writer);
            }
            $jod_response_writer->addJsCode("(__InputMask.getInstance()).addMask(\"{$component_id}\", \"{$mask}\");\n");
        }
        return $return_value;
    }