public function startRender(__IComponent &$component)
 {
     $properties = array();
     $component_properties = $component->getProperties();
     foreach ($component_properties as $property => $value) {
         $properties[] = $property . '="' . $value . '"';
     }
     $properties[] = 'id="' . $component->getId() . '"';
     $properties[] = 'name="' . $component->getName() . '"';
     $jod_response_writer = $this->_getJavascriptResponseWriter();
     if ($component->getVisible() == false) {
         $properties[] = 'style = "display : none;"';
     }
     $value = $component->getValue();
     if ($value) {
         $properties[] = 'class="depressed"';
     } else {
         $properties[] = 'class="raised"';
     }
     $width = $component->getWidth();
     $height = $component->getHeight();
     $style = array();
     if ($width != null) {
         $style[] = 'width:' . $width;
     }
     if ($height != null) {
         $style[] = 'height:' . $height;
     }
     $return_value = '<span style="display: inline-block; ' . implode('; ', $style) . '" onclick="toggleButton(this);" ' . implode(' ', $properties) . '>';
     return $return_value;
 }
 public function startRender(__IComponent &$component)
 {
     $component_id = $component->getId();
     $class_name = $component->getClassName();
     $window_properties = array();
     $window_properties[] = 'width: ' . $component->getWidth();
     $window_properties[] = 'height: ' . $component->getHeight();
     $window_properties[] = 'className: "' . $class_name . '"';
     $window_properties[] = 'destroyOnClose: false';
     $window_properties[] = 'recenterAuto: false';
     $window_properties[] = 'id: "' . $component->getId() . '"';
     if ($component->getTitle() !== null) {
         $window_properties[] = 'title: "' . $component->getTitle() . '"';
     }
     if (!$component->getShowCloseButton()) {
         $window_properties[] = 'closable: false';
     }
     if (!$component->getShowMaximizeButton()) {
         $window_properties[] = 'maximizable: false';
     }
     if (!$component->getShowMinimizeButton()) {
         $window_properties[] = 'minimizable: false';
     }
     if (__ResponseWriterManager::getInstance()->hasResponseWriter('prototype_window')) {
         $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('prototype_window');
     } else {
         $jod_response_writer = new __JavascriptOnDemandResponseWriter('prototype_window');
         $jod_response_writer->addCssFileRef('prototypewindow/themes/default.css');
         if ($class_name != 'dialog') {
             $jod_response_writer->addCssFileRef('prototypewindow/themes/' . $class_name . '.css');
         }
         $jod_response_writer->addJsFileRef('prototypewindow/javascripts/window.js');
         $jod_response_writer->addLoadCheckingVariable('Window');
         $jod_response_writer->addLoadCheckingVariable('Windows');
         $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
         $javascript_rw->addResponseWriter($jod_response_writer);
     }
     $js_code = "if(!window['{$component_id}']) {\n";
     $js_code .= "    {$component_id} = new Window({" . join(', ', $window_properties) . "});\n";
     $js_code .= "    {$component_id}.setCloseCallback(function() {\n";
     $js_code .= "        (__ClientEventHandler.getInstance()).sendEvent(\"close\", {}, \"{$component_id}\");\n";
     $js_code .= "        return true;\n";
     $js_code .= "    });\n";
     $content = $component->getContent();
     if (!empty($content)) {
         $js_code .= "    {$component_id}.setHTMLContent(" . json_encode($content) . ");\n";
     }
     $js_code .= "}\n";
     $jod_response_writer->addJsCode($js_code);
 }
    public function startRender(__IComponent &$component)
    {
        if (__ResponseWriterManager::getInstance()->hasResponseWriter('sliderjscode')) {
            $jod_response_writer = __ResponseWriterManager::getInstance()->getResponseWriter('sliderjscode');
        } else {
            $jod_response_writer = new __JavascriptOnDemandResponseWriter('sliderjscode');
            $jod_response_writer->addJsFileRef('scriptaculous/src/slider.js');
            $jod_response_writer->addLoadCheckingVariable('Control');
            $jod_response_writer->addLoadCheckingVariable('Control.Slider');
            $javascript_rw = __ResponseWriterManager::getInstance()->getResponseWriter('javascript');
            $javascript_rw->addResponseWriter($jod_response_writer);
        }
        $component_id = $component->getId();
        $handle = $component_id . '_handle';
        $track = $component_id . '_track';
        $initial_value = $component->getValue();
        $input_receiver = $component->getInputReceiver();
        $decimals = $component->getDecimals();
        if ($decimals > 0) {
            $v = 'Math.round(v*1' . str_pad('', $decimals, '0') . ')/1' . str_pad('', $decimals, '0');
        } else {
            $v = 'Math.round(v)';
        }
        $onreceiver_keyup_js = '';
        $onslide_js = '';
        if ($input_receiver != null) {
            $input_receiver_id = $input_receiver->getId();
            $onslide_js = '';
            if ($input_receiver instanceof __InputBoxComponent) {
                $onslide_js = 'onSlide: function(v) { $(\'' . $input_receiver_id . '\').value = ' . $v . '; },';
                $onreceiver_keyup_js = <<<CODE

            \$("{$input_receiver_id}").onKeyUp = function() {
                var value = \$("{$input_receiver_id}").value;
                if (value == '') return;
                if (isNaN(value))
                    \$('{$component_id}').setValue(0);
                else
                    \$('{$component_id}').setValue(value);
            }                
                
CODE;
            } else {
                if ($input_receiver instanceof __LabelComponent) {
                    $onslide_js = 'onSlide: function(v) { $(\'' . $input_receiver_id . '\').update(' . $v . '); },';
                }
            }
        }
        $lower_limit = $component->getLowerLimit();
        $upper_limit = $component->getUpperLimit();
        $axis = $component->getAxis();
        $js_code = <<<CODE

        window['{$component_id}'] = new Control.Slider("{$handle}", "{$track}", {
                {$onslide_js}
                onChange: function(v) { (__ClientEventHandler.getInstance()).sendEvent("change", {}, "{$component_id}"); },
                range: \$R({$lower_limit},{$upper_limit}),
                sliderValue: {$initial_value},
                axis: "{$axis}"
        });
        {$onreceiver_keyup_js}  
        
CODE;
        $jod_response_writer->addJsCode($js_code);
        $width = $component->getWidth();
        $height = $component->getHeight();
        $handle_width = $component->getHandleWidth();
        $handle_height = $component->getHandleHeight();
        $track_css_class = $component->getTrackCssClass();
        $left_track_css_class = $component->getLeftTrackCssClass();
        $handle_img = $component->getHandleImg();
        if (empty($track_css_class)) {
            $track_style = 'style="width:' . $width . '; background-color:#ccc; height: ' . $height . ';"';
        } else {
            $track_style = 'class="' . $track_css_class . '"';
        }
        if (empty($handle_img)) {
            $handle_style = 'style="width:' . $handle_width . '; height:' . $handle_height . ';background-color:#f00; cursor:move;"';
        } else {
            $handle_style = 'style="width:' . $handle_width . '; height:' . $handle_height . ';"';
        }
        $return_value = <<<CODE
        <div id="{$component_id}" style="width:{$width}; height: {$handle_height};">
        <div {$track_style} id="{$track}" style="width:{$width}; height:{$height};">
            <div class="{$left_track_css_class}"></div><div id="{$handle}" {$handle_style}><img src="{$handle_img}" alt="" style="float: left;" /></div>
        </div>            
        </div>
CODE;
        return $return_value;
    }