diff --git a/app/code/community/OpenTools/Ordernumber/Block/Counters.php b/app/code/community/OpenTools/Ordernumber/Block/Counters.php
index 272b00cc8c2213fdd7fa6b2bb18ce852ea8cfe51..3f5e18ec432594acf22d94e871204a28cdead11b 100644
--- a/app/code/community/OpenTools/Ordernumber/Block/Counters.php
+++ b/app/code/community/OpenTools/Ordernumber/Block/Counters.php
@@ -1,418 +1,436 @@
 <?php
 class OpenTools_Ordernumber_Block_Counters extends Mage_Adminhtml_Block_System_Config_Form_Field
 {
-	protected $_addRowButtonHtml = array();
-	protected $_addRowDeleteButtonHtml = array();
-	protected $_editRowButtonHtml = array();
-	protected $_editCancelRowButtonHtml = array();
-	protected $_deleteRowButtonHtml = array();
-	protected $_undeleteRowButtonHtml = array();
-	protected $_types = null;
-
-	protected $_dbModel = null;
-	protected function _getModel() {
-	    return Mage::getModel('opentools_ordernumber/ordernumber');
-	}
-	public function getModel() {
-	    if (is_null($this->_dbModel))
-	        $this->_dbModel = $this->_getModel();
-	    return $this->_dbModel;
-	}
-
-	public function getNumberTypes() {
-	    if (is_null($this->_types)) {
-	        $this->_types = $this->getModel()->getNumberTypes();
-	    }
-	    return $this->_types;
-	}
-
-	function logitem($label, $item) {
-		Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
-		Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
-		Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
-	}
-
-	/**
-	 * Returns html part of the setting
-	 *
-	 * @param Varien_Data_Form_Element_Abstract $element
-	 * @return string
-	 */
-	public function render(Varien_Data_Form_Element_Abstract $element)
-	{
-		$this->setElement($element);
+    protected $_addRowButtonHtml = array();
+    protected $_newRowDeleteBtn = array();
+    protected $_editRowButtonHtml = array();
+    protected $_editCancelRowButtonHtml = array();
+    protected $_deleteRowButtonHtml = array();
+    protected $_undeleteRowButtonHtml = array();
+    protected $_types = null;
+
+    protected $_dbModel = null;
+    protected function _getModel()
+    {
+        return Mage::getModel('opentools_ordernumber/ordernumber');
+    }
+
+    public function getModel()
+    {
+        if (is_null($this->_dbModel)) {
+            $this->_dbModel = $this->_getModel();
+        }
+        return $this->_dbModel;
+    }
+
+    public function getNumberTypes()
+    {
+        if (is_null($this->_types)) {
+            $this->_types = $this->getModel()->getNumberTypes();
+        }
+        return $this->_types;
+    }
+
+    protected function logitem($label, $item)
+    {
+        Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
+        Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
+        Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
+    }
+
+    /**
+     * Returns html part of the setting
+     *
+     * @param Varien_Data_Form_Element_Abstract $element
+     * @return string
+     */
+    public function render(Varien_Data_Form_Element_Abstract $element)
+    {
+        $this->setElement($element);
 
         $html = '';
-		$html .= '<table id="ordernumber_counters_template_table" style="display:none">';
-		$html .= $this->_getRowHtmlNew();
-		$html .= '</table>';
+        $html .= '<table id="ordernumber_counters_template_table" style="display:none">';
+        $html .= $this->_getRowHtmlNew();
+        $html .= '</table>';
 
-		$html .= '<div class="grid"><table id="ordernumber_counters_table" class="data" style="width: 100%;">';
-		$html .= $this->_getRowHeader();
+        $html .= '<div class="grid"><table id="ordernumber_counters_table" class="data" style="width: 100%;">';
+        $html .= $this->_getRowHeader();
 
-		$collection = $this->getModel()->getCollection()->addOrder('number_type', Varien_Data_Collection::SORT_ORDER_ASC)->addOrder('number_format', Varien_Data_Collection::SORT_ORDER_ASC);
-		foreach ($collection as $counter) {
-			$html .= $this->_getRowHtml($counter);
-		}
+        $collection = $this->getModel()->getCollection()->addOrder('number_type', Varien_Data_Collection::SORT_ORDER_ASC)->addOrder('number_format', Varien_Data_Collection::SORT_ORDER_ASC);
+        foreach ($collection as $counter) {
+            $html .= $this->_getRowHtml($counter);
+        }
 
-		$html .= '</table></div>';
+        $html .= '</table></div>';
 
         return '<tr id="row_' . $element->getHtmlId() . '"><td colspan="5">' . $html . '</td></tr>';
-	}
-
-	/**
-	 * Retrieve html for the table header
-	 * @return string
-	 */
-	protected function _getRowHeader()
-	{
-		$html  = '<tr class="headings">';
-		$html .= '<th>'. $this->__('Counter Type') . '</th>';
-		$html .= '<th>'. $this->__('Scope') . '</th>';
-		$html .= '<th>'. $this->__('Counter Name') . '</th>';
-		$html .= '<th>'. $this->__('Counter') . '</</th>';
-		$html .= '<th>' . $this->_getAddRowButtonHtml('ordernumber_counters_table',
-				'ordernumber_counters_template_table', 'Add New Counter') . '</th>';
-		$html .= '</tr>';
-		return $html;
-	}
-
-	/**
-	 * Retrieve html template for new counters
-	 *
-	 * @return string
-	 */
-	protected function _getRowHtmlNew()
-	{
-		$html  = '<tr>';
-		$html .= '<td>' . $this->_getNumberTypeSelect($this->getElement()->getName() . '[new_counter_type][]', true) . '</td>';
-		$html .= '<td>' . $this->_getNumberScopeSelect($this->getElement()->getName() . '[new_counter_scope][]', true) . '</td>';
-		$html .= '<td><input type="text" name="' . $this->getElement()->getName() . '[new_counter_name][]" disabled /></td>';
-		$html .= '<td><input class="counter_edit  validate-not-negative-number input-text" type="text" name="' . $this->getElement()->getName() . '[new_counter_value][]" disabled /></td>';
-		$html .= '<td>' . $this->_getAddRowDeleteButtonHtml() . '</td>';
-		$html .= '</tr>';
-		return $html;
-	}
-
-	protected function _getNumberTypeSelect($name, $id='', $disabled=true, $current=null)
-	{
-	    $options = array();
-	    foreach ($this->getNumberTypes() as $type=>$label) {
-	        $options[] = array('value'=>$type, 'label'=>$label);
-	    }
-		$html = $this->getLayout()->createBlock('core/html_select')
-		    ->setName($name)
-		    ->setClass($this->_getDisabled($disabled))
-		    ->setValue($current)
-		    ->setOptions($options)
-		    ->setExtraParams($this->_getDisabled($disabled))
-			->toHtml();
-		return $html;
-	}
-
-	/**
-	 * Retrieve stores structure; Adjusted from Mage_Adminhtml_Model_System_Store::getStoreValuesForForm
-	 * to also include "All stores|views of website|store: ..." in the possible selections
-	 * Also adjusted the values of the options
-	 *
-	 * @param bool $isAll
-	 * @param array $storeIds
-	 * @param array $groupIds
-	 * @param array $websiteIds
-	 * @return array
-	 */
-	public function _getScoreStructureOptions($isAll = false, $websiteIds = array(), $groupIds = array(), $storeIds = array())
-	{
-	    $sstore = Mage::getSingleton('adminhtml/system_store');
+    }
+
+    /**
+     * Retrieve html for the table header
+     * @return string
+     */
+    protected function _getRowHeader()
+    {
+        $html  = '<tr class="headings">';
+        $html .= '<th>'. $this->__('Counter Type') . '</th>';
+        $html .= '<th>'. $this->__('Scope') . '</th>';
+        $html .= '<th>'. $this->__('Counter Name') . '</th>';
+        $html .= '<th>'. $this->__('Counter') . '</</th>';
+        $html .= '<th>' . $this->_getAddRowButtonHtml('ordernumber_counters_table',
+                'ordernumber_counters_template_table', 'Add New Counter') . '</th>';
+        $html .= '</tr>';
+        return $html;
+    }
+
+    /**
+     * Retrieve html template for new counters
+     *
+     * @return string
+     */
+    protected function _getRowHtmlNew()
+    {
+        $html  = '<tr>';
+        $html .= '<td>' . $this->_getNumberTypeSelect($this->getElement()->getName() . '[new_counter_type][]', true) . '</td>';
+        $html .= '<td>' . $this->_getNumberScopeSelect($this->getElement()->getName() . '[new_counter_scope][]', true) . '</td>';
+        $html .= '<td><input type="text" name="' . $this->getElement()->getName() . '[new_counter_name][]" disabled /></td>';
+        $html .= '<td><input class="counter_edit  validate-not-negative-number input-text" type="text" name="' . $this->getElement()->getName() . '[new_counter_value][]" disabled /></td>';
+        $html .= '<td>' . $this->_getNewRowDeleteBtn() . '</td>';
+        $html .= '</tr>';
+        return $html;
+    }
+
+    protected function _getNumberTypeSelect($name, $id='', $disabled=true, $current=null)
+    {
+        $options = array();
+        foreach ($this->getNumberTypes() as $type=>$label) {
+            $options[] = array('value'=>$type, 'label'=>$label);
+        }
+        $html = $this->getLayout()->createBlock('core/html_select')
+            ->setName($name)
+            ->setClass($this->_getDisabled($disabled))
+            ->setValue($current)
+            ->setOptions($options)
+            ->setExtraParams($this->_getDisabled($disabled))
+            ->toHtml();
+        return $html;
+    }
+
+    /**
+     * Retrieve stores structure; Adjusted from Mage_Adminhtml_Model_System_Store::getStoreValuesForForm
+     * to also include "All stores|views of website|store: ..." in the possible selections
+     * Also adjusted the values of the options
+     *
+     * @param bool $isAll
+     * @param array $storeIds
+     * @param array $groupIds
+     * @param array $websiteIds
+     * @return array
+     */
+    public function _getScoreStructureOptions($isAll = false, $websiteIds = array(),
+                                              $groupIds = array(), $storeIds = array()
+    ) {
+        $sstore = Mage::getSingleton('adminhtml/system_store');
         $nonEscapableNbspChar = html_entity_decode('&#160;', ENT_NOQUOTES, 'UTF-8');
-	    $out = array();
-
-	    if ($isAll) {
-	        $out[] = array(
-	                'value' => '',
-	                'label' => $this->__('Global')
-	        );
-	    }
-
-	    $websites = $sstore->getWebsiteCollection();
-	    foreach ($websites as $website) {
-	        $websiteId = $website->getId();
-	        $siteStr = (int)$websiteId;
-	        if ($websiteIds && !in_array($websiteId, $websiteIds)) {
-	            continue;
-	        }
-	        $out[] = array(
-	                'value' => $siteStr,
-	                'label' => $this->__('All stores of website: %s', $website->getName())
-	        );
-	        // We cannot nest optiongroups, so we have to emulate it by inserting an empty optiongroup and manually indenting the groups and stores
-	        $out[] = array(
-	                'value' => array(),
-	                'label' => $this->__('Stores of website: %s', $website->getName()),
-	        );
-
-	        foreach ($website->getGroups() as $group) {
-	            $groupId = $group->getId();
-	            $groupStr = $siteStr . '/' . (int)$groupId;
-
-	            if ($groupIds && !in_array($groupId, $groupIds)) {
-	                continue;
-	            }
-
-	            $out[] = array(
-	                    'value' => $groupStr,
-	                    'label' => str_repeat($nonEscapableNbspChar, 4) . $this->__('All views of store: %s', $group->getName()),
-	            );
-
-	            $stores = array();
-	            foreach ($group->getStores() as $store) {
-
-	                $storeId = $store->getId();
-	                $storeStr = $groupStr . '/' . (int)$storeId;
-	                if ($storeIds && !in_array($storeId, $storeIds)) {
-	                    continue;
-	                }
-	                $stores[] = array(
-	                        'value' => $storeStr,
-	                        'label' => str_repeat($nonEscapableNbspChar, 4) . $store->getName(),
-	                );
-	            }
-	            if (!empty($stores)) {
-	                $out[] = array(
-	                        'value' => $stores,
-	                        'label' => str_repeat($nonEscapableNbspChar, 4) . $this->__('Views of store: %s', $group->getName()),
-	                );
-	            }
-	        }
-	    }
-	    return $out;
-	}
-
-	protected function _getNumberScopeSelect($name, $disabled=true, $current=null)
-	{
+        $out = array();
+
+        if ($isAll) {
+            $out[] = array(
+                    'value' => '',
+                    'label' => $this->__('Global')
+            );
+        }
+
+        $websites = $sstore->getWebsiteCollection();
+        foreach ($websites as $website) {
+            $websiteId = $website->getId();
+            $siteStr = (int)$websiteId;
+            if ($websiteIds && !in_array($websiteId, $websiteIds)) {
+                continue;
+            }
+            $out[] = array(
+                    'value' => $siteStr,
+                    'label' => $this->__('All stores of website: %s', $website->getName())
+            );
+            // We cannot nest optiongroups, so we have to emulate it by inserting an empty
+            // optiongroup and manually indenting the groups and stores
+            $out[] = array(
+                    'value' => array(),
+                    'label' => $this->__('Stores of website: %s', $website->getName()),
+            );
+
+            foreach ($website->getGroups() as $group) {
+                $groupId = $group->getId();
+                $groupStr = $siteStr . '/' . (int)$groupId;
+
+                if ($groupIds && !in_array($groupId, $groupIds)) {
+                    continue;
+                }
+
+                $out[] = array(
+                        'value' => $groupStr,
+                        'label' => str_repeat($nonEscapableNbspChar, 4) .
+                                   $this->__('All views of store: %s', $group->getName()),
+                );
+
+                $stores = array();
+                foreach ($group->getStores() as $store) {
+
+                    $storeId = $store->getId();
+                    $storeStr = $groupStr . '/' . (int)$storeId;
+                    if ($storeIds && !in_array($storeId, $storeIds)) {
+                        continue;
+                    }
+                    $stores[] = array(
+                            'value' => $storeStr,
+                            'label' => str_repeat($nonEscapableNbspChar, 4) . $store->getName(),
+                    );
+                }
+                if (!empty($stores)) {
+                    $out[] = array(
+                            'value' => $stores,
+                            'label' => str_repeat($nonEscapableNbspChar, 4) .
+                                       $this->__('Views of store: %s', $group->getName()),
+                    );
+                }
+            }
+        }
+        return $out;
+    }
+
+    protected function _getNumberScopeSelect($name, $disabled=true, $current=null)
+    {
         $options = $this->_getScoreStructureOptions(true);
-	    $html = $this->getLayout()->createBlock('core/html_select')
-	        ->setName($name)
-	        ->setClass($this->_getDisabled($disabled))
-	        ->setValue($current)
-    	    ->setOptions($options)
-	        ->setExtraParams($this->_getDisabled($disabled))
-	        ->toHtml();
-	    return $html;
-	}
-
-	/** Convert the scope id ('' for global, websiteID/groupID/storeID)
-	 *  to a human-readable string
-	 *
-	 * @param $scope_ids scope id ('' for global, websiteID/groupID/storeID)
-	 * @return string
-	 */
-	protected function _convertScopeToString($scope_ids)
-	{
-	    $sstore = Mage::getSingleton('adminhtml/system_store');
-		$nonEscapableNbspChar = html_entity_decode('&#160;', ENT_NOQUOTES, 'UTF-8');
-		$ids = explode ('/', $scope_ids);
-
-	    $scopes = array();
-	    if (empty($ids) || empty($ids[0])) {
-	        $scopes[] = $this->__('Global');
-	    } else {
-	        $website = Mage::getModel('core/website')->load($ids[0]);
-	        if ($website)
-    	        $scopes[] = $this->__('Website: %s', $website->getName());
-	    }
-	    if (count($ids)>1) {
-	        $group = Mage::getModel('core/store_group')->load($ids[1]);
-	        if ($group)
-    	        $scopes[] = str_repeat($nonEscapableNbspChar, 4) . $this->__('Store: %s', $group->getName());
-	    }
-	    if (count($ids)>2) {
-	        $store = Mage::getModel('core/store')->load($ids[2]);
-	        if ($store)
-    	        $scopes[] = str_repeat($nonEscapableNbspChar, 8) . $this->__('View: %s', $store->getName());
-	    }
-	    return implode('<br />', $scopes);
-	}
-
-	/**
-	 * Retrieve html template for setting
-	 *
-	 * @param int $rowIndex
-	 * @return string
-	 */
-	protected function _getRowHtml($counter)
-	{
-	    static $class='odd';
-
-		$html  = '<tr class="'.$class.'">';
-		$class = ($class=='odd')?'even':'odd';
-		$types = $this->getNumberTypes();
-		$html .= '<td class="ordernumber_type">'.$types[$counter->getNumberType()].'</td>';
-		$html .= '<td class="ordernumber_scope">' . $this->_convertScopeToString($counter->getNumberScope()) . '</td>';
-		$html .= '<td class="ordernumber_name">' . $counter->getNumberFormat() . '</td>';
-		$html .= '<td class="ordernumber_counter">' .
-		           '<div class="">' . (int)$counter->getCount() . '</div>' .
-		           '<input type="hidden" disabled class="oton-counter-formelement oton-counter-edit oton-counter-delete" name="' . $this->getElement()->getName() . '[oldcounter][' . (int)$counter->getId() . ']" value="' . (int)$counter->getCount() . '" />' .
-		           '<input style="display:none" disabled="disabled" class="oton-counter-formelement oton-counter-edit validate-not-negative-number input-text" name="' . $this->getElement()->getName() . '[counter][' . (int)$counter->getId() . ']" value="' . (int)$counter->getCount() . '" ' . $this->_getDisabled() . '/>' .
-		         '</td>';
-
-		$html .= '<td>' .
-		          $this->_getEditRowButtonHtml() .
-		          $this->_getEditCancelRowButtonHtml() .
-		          '<input type="hidden" disabled class="oton-counter-formelement oton-counter-delete" name="'. $this->getElement()->getName() . '[deletecounter][]" value="' . (int)$counter->getId() . '" />' .
-		          $this->_getDeleteRowButtonHtml() .
-		          $this->_getUndeleteRowButtonHtml() .
-		          '</td>';
-		$html .= '</tr>';
-
-		return $html;
-	}
-
-   protected function _getDisabled($forceDisabled=false)
-   {
-       return ($forceDisabled || $this->getElement()->getDisabled()) ? ' disabled' : '';
-   }
-
-	protected function _getValue($key)
-	{
-		return $this->getElement()->getData('value/' . $key);
-	}
-
-	protected function _getSelected($key, $value)
-	{
-		return $this->getElement()->getData('value/' . $key) == $value ? 'selected="selected"' : '';
-	}
-
-	protected function _getJSAddRow($container, $template) {
-	    $js  = "
-	            var tmpl=$('" . $template . "');
-	            Form.getElements(tmpl).invoke('enable').invoke('removeClassName', 'disabled');
-	            var newc=$('" . $template . "').innerHTML;
-	            Element.insert($('" . $container . "'), {bottom: newc});
-	            $('" . $template . "').select('input, select, button').invoke('disable').invoke('addClassName', 'disabled'); ";
-	    return $js;
-	}
-	protected function _getJSEditRow($selector) {
-	    $js = "
-	            $(this).up('" . $selector . "').select('.oton-counter-formelement').invoke('hide').invoke('disable').invoke('addClassName', 'disabled');
-	            $(this).up('" . $selector . "').select('.oton-counter-edit').invoke('show').invoke('enable').invoke('removeClassName', 'disabled');";
-	    return $js;
-
-	}
-	protected function _getJSEditCancelRow($selector) {
-	    $js = "
-	            $(this).up('" . $selector . "').select('.oton-counter-formelement').invoke('hide').invoke('disable').invoke('addClassName', 'disabled');
-	            $(this).up('" . $selector . "').select('.oton-counter-display').invoke('show').invoke('enable').invoke('removeClassName', 'disabled');";
-	    return $js;
-
-	}
-	protected function _getJSDeleteRow($selector) {
-		$js = "
-		        var tr=$(this).up('" . $selector . "');
-		        tr.select('.oton-counter-formelement').invoke('hide').invoke('disable').invoke('addClassName', 'disabled');
-		        tr.select('.oton-counter-delete').invoke('show').invoke('enable').invoke('removeClassName', 'disabled');
-		        tr.setStyle({textDecoration: 'line-through'});";
-	    return $js;
-	}
-	protected function _getJSUndeleteRow($selector) {
-		$js = "
-		        var tr=$(this).up('" . $selector . "');
-		        tr.select('.oton-counter-formelement').invoke('hide').invoke('disable').invoke('addClassName', 'disabled');
-		        tr.select('.oton-counter-display').invoke('show').invoke('enable').invoke('removeClassName', 'disabled');
-		        tr.setStyle({textDecoration: ''});";
-		return $js;
-	}
-	protected function _getJSDeleteNewRow($selector) {
-	    $js = "Element.remove($(this).up('" . $selector . "'))";
-		return $js;
-	}
-
-
-
-	protected function _getAddRowDeleteButtonHtml($selector = 'tr', $title='Delete')
-	{
-		if (!$this->_addRowDeleteButtonHtml) {
-			$this->_addRowDeleteButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
-			->setType('button')
-			->setClass('delete v-middle oton-counter-add-delete' . $this->_getDisabled())
-			->setLabel($this->__($title))
-			->setOnClick($this->_getJSDeleteNewRow($selector))
-			->setDisabled($this->_getDisabled())
-			->toHtml();
-		}
-		return $this->_addRowDeleteButtonHtml;
-	}
-
-	protected function _getAddRowButtonHtml($container, $template, $title='Add')
-	{
-		if (!isset($this->_addRowButtonHtml[$container])) {
-			$this->_addRowButtonHtml[$container] = $this->getLayout()->createBlock('adminhtml/widget_button')
-			->setType('button')
-			->setClass('add oton-counter-add' . $this->_getDisabled())
-			->setLabel($this->__($title))
-			->setOnClick($this->_getJSAddRow($container, $template))
-			->setDisabled($this->_getDisabled())
-			->toHtml();
-		}
-		return $this->_addRowButtonHtml[$container];
-	}
-
-	protected function _getEditRowButtonHtml($selector = 'tr', $title='Edit')
-	{
-		if (!$this->_editRowButtonHtml) {
-			$this->_editRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
-			->setType('button')
-			->setClass('edit v-middle oton-counter-formelement oton-counter-display' . $this->_getDisabled())
-			->setLabel($this->__($title))
-			->setOnClick($this->_getJSEditRow($selector))
-			->setDisabled($this->_getDisabled())
-			->toHtml();
-		}
-		return $this->_editRowButtonHtml;
-	}
-
-	protected function _getEditCancelRowButtonHtml($selector = 'tr', $title='Cancel')
-	{
-		if (!$this->_editCancelRowButtonHtml) {
-			$this->_editCancelRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
-			->setType('button')
-			->setClass('cancel v-middle oton-counter-formelement oton-counter-edit' . $this->_getDisabled())
-			->setLabel($this->__($title))
-			->setOnClick($this->_getJSEditCancelRow($selector))
-			->setDisabled($this->_getDisabled())
-	        ->setStyle('display: none;')
-			->toHtml();
-		}
-		return $this->_editCancelRowButtonHtml;
-	}
-
-	protected function _getDeleteRowButtonHtml($selector = 'tr', $title = 'Delete')
-	{
-		if (!$this->_deleteRowButtonHtml) {
-			$this->_deleteRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
-			->setType('button')
-			->setClass('delete v-middle oton-counter-formelement oton-counter-display oton-counter-edit' . $this->_getDisabled())
-			->setLabel($this->__($title))
-			->setOnClick($this->_getJSDeleteRow($selector))
-			->setDisabled($this->_getDisabled())
-			->toHtml();
-		}
-		return $this->_deleteRowButtonHtml;
-	}
-	protected function _getUndeleteRowButtonHtml($selector = 'tr', $title = 'Restore')
-	{
-	    if (!$this->_undeleteRowButtonHtml) {
-	        $this->_undeleteRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
-	        ->setType('button')
-	        ->setClass('v-middle oton-counter-formelement oton-counter-delete')
-	        ->setLabel($this->__($title))
-	        ->setOnClick($this->_getJSUndeleteRow($selector))
-	        ->setDisabled($this->_getDisabled() || true)
-	        ->setStyle('display: none;')
-	        ->toHtml();
-	    }
-	    return $this->_undeleteRowButtonHtml;
-	}
-
-
-}
\ No newline at end of file
+        $html = $this->getLayout()->createBlock('core/html_select')
+            ->setName($name)
+            ->setClass($this->_getDisabled($disabled))
+            ->setValue($current)
+            ->setOptions($options)
+            ->setExtraParams($this->_getDisabled($disabled))
+            ->toHtml();
+        return $html;
+    }
+
+    /** Convert the scope id ('' for global, websiteID/groupID/storeID)
+     *  to a human-readable string
+     *
+     * @param $scope_ids scope id ('' for global, websiteID/groupID/storeID)
+     * @return string
+     */
+    protected function _convertScopeToString($scopeIds)
+    {
+        $nonEscapableNbspChar = html_entity_decode('&#160;', ENT_NOQUOTES, 'UTF-8');
+        $ids = explode ('/', $scopeIds);
+
+        $scopes = array();
+        if (empty($ids) || empty($ids[0])) {
+            $scopes[] = $this->__('Global');
+        } else {
+            $website = Mage::getModel('core/website')->load($ids[0]);
+            if ($website) {
+                $scopes[] = $this->__('Website: %s', $website->getName());
+            }
+        }
+        if (count($ids)>1) {
+            $group = Mage::getModel('core/store_group')->load($ids[1]);
+            if ($group) {
+                $scopes[] = str_repeat($nonEscapableNbspChar, 4) . $this->__('Store: %s', $group->getName());
+            }
+        }
+        if (count($ids)>2) {
+            $store = Mage::getModel('core/store')->load($ids[2]);
+            if ($store) {
+                $scopes[] = str_repeat($nonEscapableNbspChar, 8) . $this->__('View: %s', $store->getName());
+            }
+        }
+        return implode('<br />', $scopes);
+    }
+
+    /**
+     * Retrieve html template for setting
+     *
+     * @param int $rowIndex
+     * @return string
+     */
+    protected function _getRowHtml($counter)
+    {
+        static $class='odd';
+
+        $html  = '<tr class="'.$class.'">';
+        $class = ($class=='odd')?'even':'odd';
+        $types = $this->getNumberTypes();
+        $html .= '<td class="ordernumber_type">'.$types[$counter->getNumberType()].'</td>';
+        $html .= '<td class="ordernumber_scope">' . $this->_convertScopeToString($counter->getNumberScope()) . '</td>';
+        $html .= '<td class="ordernumber_name">' . $counter->getNumberFormat() . '</td>';
+        $html .= '<td class="ordernumber_counter">' .
+                   '<div class="">' . (int)$counter->getCount() . '</div>' .
+                   '<input type="hidden" disabled class="oton-counter-formelement oton-counter-edit oton-counter-delete" name="' . $this->getElement()->getName() . '[oldcounter][' . (int)$counter->getId() . ']" value="' . (int)$counter->getCount() . '" />' .
+                   '<input style="display:none" disabled="disabled" class="oton-counter-formelement oton-counter-edit validate-not-negative-number input-text" name="' . $this->getElement()->getName() . '[counter][' . (int)$counter->getId() . ']" value="' . (int)$counter->getCount() . '" ' . $this->_getDisabled() . '/>' .
+                 '</td>';
+
+        $html .= '<td>' .
+                  $this->_getEditRowButtonHtml() .
+                  $this->_getEditCancelRowButtonHtml() .
+                  '<input type="hidden" disabled class="oton-counter-formelement oton-counter-delete" name="'. $this->getElement()->getName() . '[deletecounter][]" value="' . (int)$counter->getId() . '" />' .
+                  $this->_getDeleteRowButtonHtml() .
+                  $this->_getUndeleteRowButtonHtml() .
+                  '</td>';
+        $html .= '</tr>';
+
+        return $html;
+    }
+
+    protected function _getDisabled($forceDisabled=false)
+    {
+        return ($forceDisabled || $this->getElement()->getDisabled()) ? ' disabled' : '';
+    }
+
+    protected function _getValue($key)
+    {
+        return $this->getElement()->getData('value/' . $key);
+    }
+
+    protected function _getSelected($key, $value)
+    {
+        return $this->getElement()->getData('value/' . $key) == $value ? 'selected="selected"' : '';
+    }
+
+    protected function _getJSAddRow($container, $template)
+    {
+        $js  = "
+                var tmpl=$('" . $template . "');
+                Form.getElements(tmpl).invoke('enable').invoke('removeClassName', 'disabled');
+                var newc=$('" . $template . "').innerHTML;
+                Element.insert($('" . $container . "'), {bottom: newc});
+                $('" . $template . "').select('input, select, button').invoke('disable').invoke('addClassName', 'disabled'); ";
+        return $js;
+    }
+    protected function _getJSEditRow($selector)
+    {
+        $js = "
+                $(this).up('" . $selector . "').select('.oton-counter-formelement').invoke('hide').invoke('disable').invoke('addClassName', 'disabled');
+                $(this).up('" . $selector . "').select('.oton-counter-edit').invoke('show').invoke('enable').invoke('removeClassName', 'disabled');";
+        return $js;
+
+    }
+    protected function _getJSEditCancelRow($selector)
+    {
+        $js = "
+                $(this).up('" . $selector . "').select('.oton-counter-formelement').invoke('hide').invoke('disable').invoke('addClassName', 'disabled');
+                $(this).up('" . $selector . "').select('.oton-counter-display').invoke('show').invoke('enable').invoke('removeClassName', 'disabled');";
+        return $js;
+
+    }
+    protected function _getJSDeleteRow($selector)
+    {
+        $js = "
+                var tr=$(this).up('" . $selector . "');
+                tr.select('.oton-counter-formelement').invoke('hide').invoke('disable').invoke('addClassName', 'disabled');
+                tr.select('.oton-counter-delete').invoke('show').invoke('enable').invoke('removeClassName', 'disabled');
+                tr.setStyle({textDecoration: 'line-through'});";
+        return $js;
+    }
+    protected function _getJSUndeleteRow($selector)
+    {
+        $js = "
+                var tr=$(this).up('" . $selector . "');
+                tr.select('.oton-counter-formelement').invoke('hide').invoke('disable').invoke('addClassName', 'disabled');
+                tr.select('.oton-counter-display').invoke('show').invoke('enable').invoke('removeClassName', 'disabled');
+                tr.setStyle({textDecoration: ''});";
+        return $js;
+    }
+    protected function _getJSDeleteNewRow($selector)
+    {
+        $js = "Element.remove($(this).up('" . $selector . "'))";
+        return $js;
+    }
+
+
+
+    protected function _getNewRowDeleteBtn($selector = 'tr', $title='Delete')
+    {
+        if (!$this->_newRowDeleteBtn) {
+            $this->_newRowDeleteBtn = $this->getLayout()->createBlock('adminhtml/widget_button')
+            ->setType('button')
+            ->setClass('delete v-middle oton-counter-add-delete' . $this->_getDisabled())
+            ->setLabel($this->__($title))
+            ->setOnClick($this->_getJSDeleteNewRow($selector))
+            ->setDisabled($this->_getDisabled())
+            ->toHtml();
+        }
+        return $this->_newRowDeleteBtn;
+    }
+
+    protected function _getAddRowButtonHtml($container, $template, $title='Add')
+    {
+        if (!isset($this->_addRowButtonHtml[$container])) {
+            $this->_addRowButtonHtml[$container] = $this->getLayout()->createBlock('adminhtml/widget_button')
+            ->setType('button')
+            ->setClass('add oton-counter-add' . $this->_getDisabled())
+            ->setLabel($this->__($title))
+            ->setOnClick($this->_getJSAddRow($container, $template))
+            ->setDisabled($this->_getDisabled())
+            ->toHtml();
+        }
+        return $this->_addRowButtonHtml[$container];
+    }
+
+    protected function _getEditRowButtonHtml($selector = 'tr', $title='Edit')
+    {
+        if (!$this->_editRowButtonHtml) {
+            $this->_editRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
+            ->setType('button')
+            ->setClass('edit v-middle oton-counter-formelement oton-counter-display' . $this->_getDisabled())
+            ->setLabel($this->__($title))
+            ->setOnClick($this->_getJSEditRow($selector))
+            ->setDisabled($this->_getDisabled())
+            ->toHtml();
+        }
+        return $this->_editRowButtonHtml;
+    }
+
+    protected function _getEditCancelRowButtonHtml($selector = 'tr', $title='Cancel')
+    {
+        if (!$this->_editCancelRowButtonHtml) {
+            $this->_editCancelRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
+            ->setType('button')
+            ->setClass('cancel v-middle oton-counter-formelement oton-counter-edit' . $this->_getDisabled())
+            ->setLabel($this->__($title))
+            ->setOnClick($this->_getJSEditCancelRow($selector))
+            ->setDisabled($this->_getDisabled())
+            ->setStyle('display: none;')
+            ->toHtml();
+        }
+        return $this->_editCancelRowButtonHtml;
+    }
+
+    protected function _getDeleteRowButtonHtml($selector = 'tr', $title = 'Delete')
+    {
+        if (!$this->_deleteRowButtonHtml) {
+            $this->_deleteRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
+            ->setType('button')
+            ->setClass('delete v-middle oton-counter-formelement oton-counter-display oton-counter-edit' . $this->_getDisabled())
+            ->setLabel($this->__($title))
+            ->setOnClick($this->_getJSDeleteRow($selector))
+            ->setDisabled($this->_getDisabled())
+            ->toHtml();
+        }
+        return $this->_deleteRowButtonHtml;
+    }
+    protected function _getUndeleteRowButtonHtml($selector = 'tr', $title = 'Restore')
+    {
+        if (!$this->_undeleteRowButtonHtml) {
+            $this->_undeleteRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
+            ->setType('button')
+            ->setClass('v-middle oton-counter-formelement oton-counter-delete')
+            ->setLabel($this->__($title))
+            ->setOnClick($this->_getJSUndeleteRow($selector))
+            ->setDisabled($this->_getDisabled() || true)
+            ->setStyle('display: none;')
+            ->toHtml();
+        }
+        return $this->_undeleteRowButtonHtml;
+    }
+
+
+}
diff --git a/app/code/community/OpenTools/Ordernumber/Block/Replacements.php b/app/code/community/OpenTools/Ordernumber/Block/Replacements.php
index 64e811ddf0ce27950f7964632f70191d108b57f3..5254989c0ebf45741da2d69405603008a2cf9b0f 100644
--- a/app/code/community/OpenTools/Ordernumber/Block/Replacements.php
+++ b/app/code/community/OpenTools/Ordernumber/Block/Replacements.php
@@ -1,250 +1,252 @@
 <?php
 class OpenTools_Ordernumber_Block_Replacements extends Mage_Adminhtml_Block_System_Config_Form_Field
 {
-	protected $_addRowButtonHtml = array();
-	protected $_deleteRowButtonHtml = array();
-
-	function logitem($label, $item) {
-		Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
-		Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
-		Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
-	}
-
-	/**
-	 * Returns html part of the setting.
-	 *
-	 * @param Varien_Data_Form_Element_Abstract $element
-	 * @return string
-	*/
-	public function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
-	{
-		$this->setElement($element);
+    protected $_addRowButtonHtml = array();
+    protected $_deleteRowButtonHtml = array();
+
+    public function logitem($label, $item)
+    {
+        Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
+        Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
+        Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
+    }
+
+    /**
+     * Returns html part of the setting.
+     *
+     * @param Varien_Data_Form_Element_Abstract $element
+     * @return string
+     */
+    public function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
+    {
+        $this->setElement($element);
 
         $html = '';
-		$html .= '<table id="ordernumber_replacements_template_table" style="display:none">';
-		$html .= $this->_getRowHtml();
-		$html .= '</table>';
+        $html .= '<table id="ordernumber_replacements_template_table" style="display:none">';
+        $html .= $this->_getRowHtml();
+        $html .= '</table>';
 
-		$html .= '<div class="grid"><table id="ordernumber_replacements_table" class="data" style="width: 100%;">';
-		$html .= $this->_getRowHeader();
+        $html .= '<div class="grid"><table id="ordernumber_replacements_table" class="data" style="width: 100%;">';
+        $html .= $this->_getRowHeader();
 
-// $this->logitem("render element: ", $element);
-		if ($this->_getValue('')) {
-		    foreach ($this->_getValue('') as $i => $values) {
+        // $this->logitem("render element: ", $element);
+        if ($this->_getValue('')) {
+            foreach ($this->_getValue('') as $i => $values) {
                 $html .= $this->_getRowHtml($i, $values);
-		    }
-		} else {
-		    $html .= $this->_getEmptyRowHtml();
-		}
-
-		$html .= '</table></div>';
-		return $html;
-	}
-
-	/**
-	 * Render the whole table row for the form field.
-	 * Adjusted from ./app/code/core/Mage/Adminhtml/Block/System/Config/Form/Field.php
-	 * Adjustments: Removed label, form control spans two columns.
-	 *
-	 * @param Varien_Data_Form_Element_Abstract $element
-	 * @return string
-	 */
-	public function render(Varien_Data_Form_Element_Abstract $element)
-	{
-	    $id = $element->getHtmlId();
-
-	    //$isDefault = !$this->getRequest()->getParam('website') && !$this->getRequest()->getParam('store');
-	    $isMultiple = $element->getExtType()==='multiple';
-
-	    // replace [value] with [inherit]
-	    $namePrefix = preg_replace('#\[value\](\[\])?$#', '', $element->getName());
-
-	    $options = $element->getValues();
-
-	    $addInheritCheckbox = false;
-	    if ($element->getCanUseWebsiteValue()) {
-	        $addInheritCheckbox = true;
-	        $checkboxLabel = Mage::helper('adminhtml')->__('Use Website');
-	    }
-	    elseif ($element->getCanUseDefaultValue()) {
-	        $addInheritCheckbox = true;
-	        $checkboxLabel = Mage::helper('adminhtml')->__('Use Default');
-	    }
-
-	    if ($addInheritCheckbox) {
-	        $inherit = $element->getInherit()==1 ? 'checked="checked"' : '';
-	        if ($inherit) {
-	            $element->setDisabled(true);
-	        }
-	    }
-
-	    $html = '';
-	    if ($element->getTooltip()) {
-	        $html .= '<td class="value with-tooltip"  colspan="2">';
-	        $html .= $this->_getElementHtml($element);
-	        $html .= '<div class="field-tooltip"><div>' . $element->getTooltip() . '</div></div>';
-	    } else {
-	        $html .= '<td class="value">';
-	        $html .= $this->_getElementHtml($element);
-	    };
-	    if ($element->getComment()) {
-	        $html.= '<p class="note"><span>'.$element->getComment().'</span></p>';
-	    }
-	    $html.= '</td>';
-
-	    if ($addInheritCheckbox) {
-
-	        $defText = $element->getDefaultValue();
-	        if ($options) {
-	            $defTextArr = array();
-	            foreach ($options as $k=>$v) {
-	                if ($isMultiple) {
-	                    if (is_array($v['value']) && in_array($k, $v['value'])) {
-	                        $defTextArr[] = $v['label'];
-	                    }
-	                } elseif ($v['value']==$defText) {
-	                    $defTextArr[] = $v['label'];
-	                    break;
-	                }
-	            }
-	            $defText = join(', ', $defTextArr);
-	        }
-
-	        // default value
-	        $html.= '<td class="use-default">';
-	        $html.= '<input id="' . $id . '_inherit" name="'
-	                . $namePrefix . '[inherit]" type="checkbox" value="1" class="checkbox config-inherit" '
-	                        . $inherit . ' onclick="toggleValueElements(this, Element.previous(this.parentNode))" /> ';
-	        $html.= '<label for="' . $id . '_inherit" class="inherit" title="'
-	                . htmlspecialchars($defText) . '">' . $checkboxLabel . '</label>';
-	        $html.= '</td>';
-	    }
-
-	    $html.= '<td class="scope-label">';
-	    if ($element->getScope()) {
-	        $html .= $element->getScopeLabel();
-	    }
-	    $html.= '</td>';
-
-	    $html.= '<td class="">';
-	    if ($element->getHint()) {
-	        $html.= '<div class="hint" >';
-	        $html.= '<div style="display: none;">' . $element->getHint() . '</div>';
-	        $html.= '</div>';
-	    }
-	    $html.= '</td>';
-
-	    return $this->_decorateRowHtml($element, $html);
-	}
-
-
-	/**
-	 * Retrieve html for the table header
-	 * @return string
-	 */
-	protected function _getRowHeader()
-	{
-		$html  = '<tr class="headings">';
-		$html .= '<th>'. $this->__('If Variable ...') . '</th>';
-		$html .= '<th>'. $this->__('is ...') . '</th>';
-		$html .= '<th></th>';
-		$html .= '<th>'. $this->__('Set this variable ..') . '</th>';
-		$html .= '<th>'. $this->__('to value ...') . '</th>';
-		$html .= '<th>' . $this->_getAddRowButtonHtml('ordernumber_replacements_table',
-				'ordernumber_replacements_template_table', 'Add New Replacement') . '</th>';
-		$html .= '</tr>';
-		return $html;
-	}
-
-	/**
-	 * Retrieve html template for variable replacements
-	 *
-	 * @param int $rowIndex
-	 * @return string
-	 */
-	protected function _getRowHtml($rowIndex = -1, $values = array())
-	{
-	    static $class = 'odd';
-	    $disabled = $this->_getDisabled($rowIndex == -1);
-		$html  = '<tr class="'.$class.'">';
-		$class = ($class=='odd')?'even':'odd';
-		$html .= '<td class="oton-replacement-variable"><input name="' . $this->getElement()->getName() . '[conditionvar][]" value="' . (($rowIndex>=0)?$values['conditionvar']:'') . '" ' . $disabled . '/></td>';
-		$html .= '<td class="oton-replacement-value"   ><input name="' . $this->getElement()->getName() . '[conditionval][]" value="' . (($rowIndex>=0)?$values['conditionval']:'') . '" ' . $disabled . '/></td>';
-		$html .= '<td>=></td>';
-		$html .= '<td class="oton-replacement-variable"><input name="' . $this->getElement()->getName() . '[newvar][]"       value="' . (($rowIndex>=0)?$values['newvar']:'') .       '" ' . $disabled . '/></td>';
-		$html .= '<td class="oton-replacement-newvalue"><input name="' . $this->getElement()->getName() . '[newval][]"       value="' . (($rowIndex>=0)?$values['newval']:'') .       '" ' . $disabled . '/></td>';
-		$html .= '<td>' . $this->_getDeleteRowButtonHtml() . '</td>';
-		$html .= '</tr>';
-
-		return $html;
-	}
-
-	/**
-	 * Display notice that no custom variables have been defined...
-	 */
-	protected function _getEmptyRowHtml()
-	{
-	    $html  = '<tr class="oton-empty-row-notice">';
-	    $html .= '<td class="oton-empty-row-notice" colspan="6"><em>' . $this->__('No custom variables have been defined.') . '</em></td>';
-	    $html .= '</tr>';
-	    return $html;
-	}
+            }
+        } else {
+            $html .= $this->_getEmptyRowHtml();
+        }
+
+        $html .= '</table></div>';
+        return $html;
+    }
+
+    /**
+     * Render the whole table row for the form field.
+     * Adjusted from ./app/code/core/Mage/Adminhtml/Block/System/Config/Form/Field.php
+     * Adjustments: Removed label, form control spans two columns.
+     *
+     * @param Varien_Data_Form_Element_Abstract $element
+     * @return string
+     */
+    public function render(Varien_Data_Form_Element_Abstract $element)
+    {
+        $id = $element->getHtmlId();
+
+        //$isDefault = !$this->getRequest()->getParam('website') && !$this->getRequest()->getParam('store');
+        $isMultiple = $element->getExtType()==='multiple';
+
+        // replace [value] with [inherit]
+        $namePrefix = preg_replace('#\[value\](\[\])?$#', '', $element->getName());
+
+        $options = $element->getValues();
+
+        $addInheritCheckbox = false;
+        if ($element->getCanUseWebsiteValue()) {
+            $addInheritCheckbox = true;
+            $checkboxLabel = Mage::helper('adminhtml')->__('Use Website');
+        } elseif ($element->getCanUseDefaultValue()) {
+            $addInheritCheckbox = true;
+            $checkboxLabel = Mage::helper('adminhtml')->__('Use Default');
+        }
+
+        if ($addInheritCheckbox) {
+            $inherit = $element->getInherit()==1 ? 'checked="checked"' : '';
+            if ($inherit) {
+                $element->setDisabled(true);
+            }
+        }
+
+        $html = '';
+        if ($element->getTooltip()) {
+            $html .= '<td class="value with-tooltip"  colspan="2">';
+            $html .= $this->_getElementHtml($element);
+            $html .= '<div class="field-tooltip"><div>' . $element->getTooltip() . '</div></div>';
+        } else {
+            $html .= '<td class="value">';
+            $html .= $this->_getElementHtml($element);
+        }
+        if ($element->getComment()) {
+            $html.= '<p class="note"><span>'.$element->getComment().'</span></p>';
+        }
+        $html.= '</td>';
+
+        if ($addInheritCheckbox) {
+
+            $defText = $element->getDefaultValue();
+            if ($options) {
+                $defTextArr = array();
+                foreach ($options as $k=>$v) {
+                    if ($isMultiple) {
+                        if (is_array($v['value']) && in_array($k, $v['value'])) {
+                            $defTextArr[] = $v['label'];
+                        }
+                    } elseif ($v['value']==$defText) {
+                        $defTextArr[] = $v['label'];
+                        break;
+                    }
+                }
+                $defText = join(', ', $defTextArr);
+            }
+
+            // default value
+            $html.= '<td class="use-default">';
+            $html.= '<input id="' . $id . '_inherit" name="'
+                    . $namePrefix . '[inherit]" type="checkbox" value="1" class="checkbox config-inherit" '
+                            . $inherit . ' onclick="toggleValueElements(this, Element.previous(this.parentNode))" /> ';
+            $html.= '<label for="' . $id . '_inherit" class="inherit" title="'
+                    . htmlspecialchars($defText) . '">' . $checkboxLabel . '</label>';
+            $html.= '</td>';
+        }
+
+        $html.= '<td class="scope-label">';
+        if ($element->getScope()) {
+            $html .= $element->getScopeLabel();
+        }
+        $html.= '</td>';
+
+        $html.= '<td class="">';
+        if ($element->getHint()) {
+            $html.= '<div class="hint" >';
+            $html.= '<div style="display: none;">' . $element->getHint() . '</div>';
+            $html.= '</div>';
+        }
+        $html.= '</td>';
+
+        return $this->_decorateRowHtml($element, $html);
+    }
+
+
+    /**
+     * Retrieve html for the table header
+     * @return string
+     */
+    protected function _getRowHeader()
+    {
+        $html  = '<tr class="headings">';
+        $html .= '<th>'. $this->__('If Variable ...') . '</th>';
+        $html .= '<th>'. $this->__('is ...') . '</th>';
+        $html .= '<th></th>';
+        $html .= '<th>'. $this->__('Set this variable ..') . '</th>';
+        $html .= '<th>'. $this->__('to value ...') . '</th>';
+        $html .= '<th>' . $this->_getAddRowButtonHtml('ordernumber_replacements_table',
+                'ordernumber_replacements_template_table', 'Add New Replacement') . '</th>';
+        $html .= '</tr>';
+        return $html;
+    }
+
+    /**
+     * Retrieve html template for variable replacements
+     *
+     * @param int $rowIndex
+     * @return string
+     */
+    protected function _getRowHtml($rowIndex = -1, $values = array())
+    {
+        static $class = 'odd';
+        $disabled = $this->_getDisabled($rowIndex == -1);
+        $html  = '<tr class="'.$class.'">';
+        $class = ($class=='odd')?'even':'odd';
+        $html .= '<td class="oton-replacement-variable"><input name="' . $this->getElement()->getName() . '[conditionvar][]" value="' . (($rowIndex>=0)?$values['conditionvar']:'') . '" ' . $disabled . '/></td>';
+        $html .= '<td class="oton-replacement-value"   ><input name="' . $this->getElement()->getName() . '[conditionval][]" value="' . (($rowIndex>=0)?$values['conditionval']:'') . '" ' . $disabled . '/></td>';
+        $html .= '<td>=></td>';
+        $html .= '<td class="oton-replacement-variable"><input name="' . $this->getElement()->getName() . '[newvar][]"       value="' . (($rowIndex>=0)?$values['newvar']:'') .       '" ' . $disabled . '/></td>';
+        $html .= '<td class="oton-replacement-newvalue"><input name="' . $this->getElement()->getName() . '[newval][]"       value="' . (($rowIndex>=0)?$values['newval']:'') .       '" ' . $disabled . '/></td>';
+        $html .= '<td>' . $this->_getDeleteRowButtonHtml() . '</td>';
+        $html .= '</tr>';
+
+        return $html;
+    }
+
+    /**
+     * Display notice that no custom variables have been defined...
+     */
+    protected function _getEmptyRowHtml()
+    {
+        $html  = '<tr class="oton-empty-row-notice">';
+        $html .= '<td class="oton-empty-row-notice" colspan="6"><em>' . $this->__('No custom variables have been defined.') . '</em></td>';
+        $html .= '</tr>';
+        return $html;
+    }
 
     protected function _getDisabled($forceDisabled=false)
     {
         return ($forceDisabled || $this->getElement()->getDisabled()) ? ' disabled' : '';
     }
 
-	protected function _getValue($key)
-	{
-		return $this->getElement()->getData(empty($key)?'value':('value/' . $key));
-	}
-
-
-	protected function _getJSAddRow($container, $template) {
-	    $js  = "
-	            var tmpl=$('" . $template . "');
-	            Form.getElements(tmpl).invoke('enable').invoke('removeClassName', 'disabled');
-	            var newc=$('" . $template . "').innerHTML;
-	            Element.insert($('" . $container . "'), {bottom: newc});
-	            $('" . $template . "').select('input, select, button').invoke('disable').invoke('addClassName', 'disabled');
-	            $(this).up('table').select('tr.oton-empty-row-notice').invoke('hide');";
-
-	    return $js;
-	}
-	protected function _getJSDeleteRow($selector) {
-	    $js = "Element.remove($(this).up('" . $selector . "'))";
-		return $js;
-	}
-
-
-
-	protected function _getAddRowButtonHtml($container, $template, $title='Add')
-	{
-		if (!isset($this->_addRowButtonHtml[$container])) {
-			$this->_addRowButtonHtml[$container] = $this->getLayout()->createBlock('adminhtml/widget_button')
-			->setType('button')
-			->setClass('add oton-replacement-add' . $this->_getDisabled())
-			->setLabel($this->__($title))
-			->setOnClick($this->_getJSAddRow($container, $template))
-			->setDisabled($this->_getDisabled())
-			->toHtml();
-		}
-		return $this->_addRowButtonHtml[$container];
-	}
-
-	protected function _getDeleteRowButtonHtml($selector = 'tr', $title = 'Delete')
-	{
-		if (!$this->_deleteRowButtonHtml) {
-			$this->_deleteRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
-			->setType('button')
-			->setClass('delete v-middle oton-replacement-formelement oton-replacement-display oton-replacement-edit' . $this->_getDisabled())
-			->setLabel($this->__($title))
-			->setOnClick($this->_getJSDeleteRow($selector))
-			->setDisabled($this->_getDisabled())
-			->toHtml();
-		}
-		return $this->_deleteRowButtonHtml;
-	}
+    protected function _getValue($key)
+    {
+        return $this->getElement()->getData(empty($key)?'value':('value/' . $key));
+    }
+
+
+    protected function _getJSAddRow($container, $template)
+    {
+        $js  = "
+                var tmpl=$('" . $template . "');
+                Form.getElements(tmpl).invoke('enable').invoke('removeClassName', 'disabled');
+                var newc=$('" . $template . "').innerHTML;
+                Element.insert($('" . $container . "'), {bottom: newc});
+                $('" . $template . "').select('input, select, button').invoke('disable').invoke('addClassName', 'disabled');
+                $(this).up('table').select('tr.oton-empty-row-notice').invoke('hide');";
+
+        return $js;
+    }
+    protected function _getJSDeleteRow($selector)
+    {
+        $js = "Element.remove($(this).up('" . $selector . "'))";
+        return $js;
+    }
+
+
+
+    protected function _getAddRowButtonHtml($container, $template, $title='Add')
+    {
+        if (!isset($this->_addRowButtonHtml[$container])) {
+            $this->_addRowButtonHtml[$container] = $this->getLayout()->createBlock('adminhtml/widget_button')
+            ->setType('button')
+            ->setClass('add oton-replacement-add' . $this->_getDisabled())
+            ->setLabel($this->__($title))
+            ->setOnClick($this->_getJSAddRow($container, $template))
+            ->setDisabled($this->_getDisabled())
+            ->toHtml();
+        }
+        return $this->_addRowButtonHtml[$container];
+    }
+
+    protected function _getDeleteRowButtonHtml($selector = 'tr', $title = 'Delete')
+    {
+        if (!$this->_deleteRowButtonHtml) {
+            $this->_deleteRowButtonHtml = $this->getLayout()->createBlock('adminhtml/widget_button')
+            ->setType('button')
+            ->setClass('delete v-middle oton-replacement-formelement oton-replacement-display oton-replacement-edit' . $this->_getDisabled())
+            ->setLabel($this->__($title))
+            ->setOnClick($this->_getJSDeleteRow($selector))
+            ->setDisabled($this->_getDisabled())
+            ->toHtml();
+        }
+        return $this->_deleteRowButtonHtml;
+    }
 
 }
\ No newline at end of file
diff --git a/app/code/community/OpenTools/Ordernumber/Helper/Data.php b/app/code/community/OpenTools/Ordernumber/Helper/Data.php
index 719a5bcffb312e0729564daa7123912457f15b15..8b82df73f9592c091e94a64bd96f80fcec51e4f8 100644
--- a/app/code/community/OpenTools/Ordernumber/Helper/Data.php
+++ b/app/code/community/OpenTools/Ordernumber/Helper/Data.php
@@ -1,14 +1,16 @@
 <?php
 class OpenTools_Ordernumber_Helper_Data extends Mage_Core_Helper_Abstract
 {
-function logitem($label, $item) {
-    Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
-    Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
-    Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
-}
+    public function logitem($label, $item)
+    {
+        Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
+        Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
+        Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
+    }
 
     /* Return a random "string" of the given length taken from the given alphabet */
-    function randomString($alphabet, $len) {
+    protected function randomString($alphabet, $len)
+    {
         $alen = strlen($alphabet);
         $r = "";
         for ($n=0; $n<$len; $n++) {
@@ -17,44 +19,73 @@ function logitem($label, $item) {
         return $r;
     }
 
-    function replaceRandom ($match) {
+    protected function replaceRandom ($match)
+    {
         /* the regexp matches (random)(Type)(Len) as match, Type and Len is optional */
         $len = ($match[3]?$match[3]:1);
         // Fallback: If no Type is given, use Digit
         $alphabet = "0123456789";
         // Select the correct alphabet depending on Type
         switch (strtolower($match[2])) {
-            case "digit": $alphabet = "0123456789"; break;
-            case "hex": $alphabet = "0123456789abcdef"; break;
-            case "letter": $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; break;
-            case "uletter": $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; break;
-            case "lletter": $alphabet = "abcdefghijklmnopqrstuvwxyz"; break;
-            case "alphanum": $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; break;
+            case "digit":
+                $alphabet = "0123456789";
+                break;
+
+            case "hex":
+                $alphabet = "0123456789abcdef";
+                break;
+
+            case "letter":
+                $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+                break;
+
+            case "uletter":
+                $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+                break;
+
+            case "lletter":
+                $alphabet = "abcdefghijklmnopqrstuvwxyz";
+                break;
+
+            case "alphanum":
+                $alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+                break;
         }
         return self::randomString ($alphabet, $len);
     }
 
-    function setupDateTimeReplacements (&$reps, $nrtype) {
-        $reps["[year]"] = date ("Y");
-        $reps["[year2]"] = date ("y");
-        $reps["[month]"] = date("m");
-        $reps["[day]"] = date("d");
-        $reps["[hour]"] = date("H");
-        $reps["[hour12]"] = date("h");
-        $reps["[ampm]"] = date("a");
-        $reps["[minute]"] = date("i");
-        $reps["[second]"] = date("s");
+    protected function setupDateTimeReplacements (&$reps, $nrtype)
+    {
+        $utime = microtime(true);
+        $reps["[year]"] = date ("Y", $utime);
+        $reps["[year2]"] = date ("y", $utime);
+        $reps["[month]"] = date("m", $utime);
+        $reps["[day]"] = date("d", $utime);
+        $reps["[hour]"] = date("H", $utime);
+        $reps["[hour12]"] = date("h", $utime);
+        $reps["[ampm]"] = date("a", $utime);
+        $reps["[minute]"] = date("i", $utime);
+        $reps["[second]"] = date("s", $utime);
+        $milliseconds = (int)(1000*($utime - (int)$utime));
+        $millisecondsstring = sprintf('%03d', $milliseconds);
+        $reps["[decisecond]"] = $millisecondsstring[0];
+        $reps["[centisecond]"] = substr($millisecondsstring, 0, 2);
+        $reps["[millisecond]"] = $millisecondsstring;
     }
-    function setupAddressReplacements(&$reps, $prefix, $address, $nrtype) {
-        if (!$address) return;
+
+    protected function setupAddressReplacements(&$reps, $prefix, $address, $nrtype)
+    {
+        if (!$address) {
+            return;
+        }
         $reps["[".$prefix."addressid]"] = $address->getId();
 
-        $reps["[".$prefix."firstname]"] = $address->firstname;
-        $reps["[".$prefix."lastname]"] = $address->lastname;
-        $reps["[".$prefix."company]"] = $address->company;
-        $reps["[".$prefix."city]"] = $address->city;
-        $reps["[".$prefix."zip]"] = $address->postcode;
-        $reps["[".$prefix."postcode]"] = $address->postcode;
+        $reps["[".$prefix."firstname]"] = $address->getFirstname();
+        $reps["[".$prefix."lastname]"] = $address->getLastname();
+        $reps["[".$prefix."company]"] = $address->getCompany();
+        $reps["[".$prefix."city]"] = $address->getCity();
+        $reps["[".$prefix."zip]"] = $address->getPostcode();
+        $reps["[".$prefix."postcode]"] = $address->getPostcode();
 
         $reps["[".$prefix."region]"] = $address->getRegion();
         $reps["[".$prefix."regioncode]"] = $address->getRegionCode();
@@ -62,50 +93,61 @@ function logitem($label, $item) {
 
         $country = $address->getCountryModel();
         $reps["[".$prefix."country]"] = $country->getName();
-        $reps["[".$prefix."countrycode2]"] = $country->iso2_code;
-        $reps["[".$prefix."countrycode3]"] = $country->iso3_code;
+        $reps["[".$prefix."countrycode2]"] = $country->getIso2Code();
+        $reps["[".$prefix."countrycode3]"] = $country->getIso3Code();
         $reps["[".$prefix."countryid]"] = $country->getId();
 
     }
-    function setupStoreReplacements (&$reps, $order, $nrtype) {
+    protected function setupStoreReplacements (&$reps, $order, $nrtype)
+    {
         $store = $order->getStore();
         $reps["[storeid]"] = $store->getStoreId();
         $reps["[storecurrency]"] = $order->getStoreCurrency();
     }
-    function setupOrderReplacements (&$reps, $order, $nrtype) {
+    protected function setupOrderReplacements (&$reps, $order, $nrtype)
+    {
         $shippingAddress = $order->getShippingAddress();
         $billingAddress = $order->getBillingAddress();
-        $address = $shippingAddress;
+        if ($shippingAddress) {
+            $address = $shippingAddress;
+        } else {
+            $address = $billingAddress;
+        }
         /* if ($nrtype == "invoice") {
             // Invoices use the billing address for un-prefixed fields
             $address = $billingAddress;
         } */
         $reps["[orderid]"] = $order->getId();
         $reps["[ordernumber]"] = $order->getIncrementId();
-        $reps["[orderstatus]"] = $order->status;
+        $reps["[orderstatus]"] = $order->getStatus();
         $reps["[currency]"] = $order->getOrderCurrency()->getCurrencyCode();
-        $reps["[customerid]"] = $order->customer_id;
+        $reps["[customerid]"] = $order->getCustomerId();
         $this->setupAddressReplacements($reps, "", $address, $nrtype);
         $this->setupAddressReplacements($reps, "shipping", $shippingAddress, $nrtype);
         $this->setupAddressReplacements($reps, "billing", $billingAddress, $nrtype);
 
-        $reps["[totalitems]"] = $order->total_item_count;
-        $reps["[totalquantity]"] = $order->total_qty_ordered;
+        $reps["[totalitems]"] = $order->getTotalItemCount();
+        $reps["[totalquantity]"] = $order->getTotalQtyOrdered();
     }
-    function setupShippingReplacements(&$reps, $order, $nrtype) {
+    protected function setupShippingReplacements(&$reps, $order, $nrtype)
+    {
         $reps["[shippingmethod]"] = $order->getShippingMethod();
     }
 
-    function setupShipmentReplacements (&$reps, $shipment, $order, $nrtype) {
+    protected function setupShipmentReplacements (&$reps, $shipment, $order, $nrtype)
+    {
         // TODO
     }
-    function setupInvoiceReplacements (&$reps, $invoice, $order, $nrtype) {
+    protected function setupInvoiceReplacements (&$reps, $invoice, $order, $nrtype)
+    {
         $reps["[invoiceid]"] = $invoice->getId();
     }
-    function setupCreditMemoReplacements (&$reps, $creditmemo, $order, $nrtype) {
+    protected function setupCreditMemoReplacements (&$reps, $creditmemo, $order, $nrtype)
+    {
         // TODO
     }
-    function setupReplacements($nrtype, $info) {
+    protected function setupReplacements($nrtype, $info)
+    {
         $reps = array();
         $order = $info['order'];
         $this->setupDateTimeReplacements($reps, $nrtype);
@@ -126,7 +168,8 @@ function logitem($label, $item) {
         return $reps;
     }
 
-    function applyCustomVariables ($nrtype, $info, $reps, $customvars) {
+    protected function applyCustomVariables ($nrtype, $info, $reps, $customvars)
+    {
         static $listvars = array("groups", "skus");
 // Mage::getSingleton('core/session')->addWarning('<pre>custom variables, conditionvar='.$conditionvar.', reps='.print_r($reps,1).', customvars='.print_r($customvars,1).'</pre>');
         $order = $info['order'];
@@ -183,13 +226,15 @@ function logitem($label, $item) {
         return $reps;
     }
 
-    function doReplacements ($fmt, $reps) {
+    protected function doReplacements ($fmt, $reps)
+    {
         // First, replace all random...[n] fields. This needs to be done with a regexp and a callback:
         $fmt = preg_replace_callback ('/\[(random)(.*?)([0-9]*?)\]/', array($this, 'replaceRandom'), $fmt);
         return str_ireplace (array_keys($reps), array_values($reps), $fmt);
     }
 
-    function replace_fields ($fmt, $nrtype, $info, $customvars) {
+    public function replace_fields ($fmt, $nrtype, $info, $customvars)
+    {
         $reps = $this->setupReplacements ($nrtype, $info);
         $reps = $this->applyCustomVariables ($nrtype, $info, $reps, $customvars);
 // $this->logitem("All replacements after custom variables: ", $reps);
diff --git a/app/code/community/OpenTools/Ordernumber/Model/Backend/Counters.php b/app/code/community/OpenTools/Ordernumber/Model/Backend/Counters.php
index a6fcbab5417767bd8a8531ed80125923f968d83b..80cdb40ac62ec9ee1a1c8ca6b665ed1ef9b78bd4 100644
--- a/app/code/community/OpenTools/Ordernumber/Model/Backend/Counters.php
+++ b/app/code/community/OpenTools/Ordernumber/Model/Backend/Counters.php
@@ -2,11 +2,13 @@
 class OpenTools_Ordernumber_Model_Backend_Counters extends Mage_Core_Model_Config_Data
 {
     protected $_dbModel = null;
-    protected function _getModel() {
+    protected function _getModel()
+    {
         return Mage::getModel('opentools_ordernumber/ordernumber');
     }
 
-    public function getModel() {
+    public function getModel()
+    {
         if (is_null($this->_dbModel))
             $this->_dbModel = $this->_getModel();
         return $this->_dbModel;
@@ -79,7 +81,11 @@ class OpenTools_Ordernumber_Model_Backend_Counters extends Mage_Core_Model_Confi
                 $counter = $model->load($countid);
                 if ($counter->getCount() != $oldval) {
                     $session->addWarning($helper->__('Counter \'%s\' (type: %s, scope: %s) was changed in the background in the dabase from %d to %d. Deleting it nonetheless.',
-                            $counter->getNumberFormat(), $model->readableType($counter->getNumberType()), $model->readableScope($counter->getNumberScope()), $oldval, $counter->getCount()));
+                            $counter->getNumberFormat(),
+                            $model->readableType($counter->getNumberType()),
+                            $model->readableScope($counter->getNumberScope()),
+                            $oldval,
+                            $counter->getCount()));
                 }
                 $counter->delete();
                 $session->addSuccess($helper->__('Successfully deleted counter \'%s\' (type: %s, scope: %s) with value %d',
@@ -87,4 +93,4 @@ class OpenTools_Ordernumber_Model_Backend_Counters extends Mage_Core_Model_Confi
             }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/app/code/community/OpenTools/Ordernumber/Model/Backend/Replacements.php b/app/code/community/OpenTools/Ordernumber/Model/Backend/Replacements.php
index 5fc1cb11000d5accb8377d50c9ef0d849848fb44..f2f09899155f3d1f7ed4290bb4b176244948ea48 100644
--- a/app/code/community/OpenTools/Ordernumber/Model/Backend/Replacements.php
+++ b/app/code/community/OpenTools/Ordernumber/Model/Backend/Replacements.php
@@ -1,13 +1,14 @@
 <?php
 class OpenTools_Ordernumber_Model_Backend_Replacements extends Mage_Adminhtml_Model_System_Config_Backend_Serialized
 {
-	function logitem($label, $item) {
-		Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
-		Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
-		Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
-	}
+    protected function logitem($label, $item)
+    {
+        Mage::Log($label . " " . get_class($item) . "\n", null, 'ordernumber.log');
+        Mage::Log(is_array($item)?$item:$item->debug(), null, 'ordernumber.log');
+        Mage::Log(get_class_methods(get_class($item)), null, 'ordernumber.log');
+    }
 
-    var $keywords = array("conditionvar", "conditionval", "newvar", "newval");
+    protected $_keywords = array("conditionvar", "conditionval", "newvar", "newval");
 
     /**
      * The form contains the values as one array for the conditionvars, one for the conditionvals,
@@ -22,15 +23,15 @@ $this->logitem("OpenTools_Ordernumber_Model_Backend_Replacements: ", $this);
         // Transpose the vals:
         $vallist = array();
         if ($vals) {
-            foreach ($vals[$this->keywords[1]] as $i => $dummy) {
+            foreach ($vals[$this->_keywords[1]] as $i => $dummy) {
                 $entry = array();
-                foreach ($this->keywords as $k) {
+                foreach ($this->_keywords as $k) {
                     $entry[$k] = $vals[$k][$i];
                 }
                 $vallist[] = $entry;
             }
         }
-Mage::Log("transposed vallist: ".print_r($vallist,1), null, 'ordernumber.log');
+Mage::Log("transposed vallist: ".print_r($vallist, 1), null, 'ordernumber.log');
         $this->setValue($vallist);
         return parent::_beforeSave();
     }
diff --git a/app/code/community/OpenTools/Ordernumber/Model/Observer.php b/app/code/community/OpenTools/Ordernumber/Model/Observer.php
index 787941d8e3f8871fa199258742fac350a70be5b5..295d6371fe2315383d6e0884e8b645ff26acc151 100644
--- a/app/code/community/OpenTools/Ordernumber/Model/Observer.php
+++ b/app/code/community/OpenTools/Ordernumber/Model/Observer.php
@@ -22,23 +22,25 @@
  */
 class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract
 {
-     public function _construct()
-     {
-         parent::_construct();
-         $this->_init('ordernumber/ordernumber');
-     }
-
     protected $_dbModel = null;
-    protected function _getModel() {
+    protected function _getModel()
+    {
         return Mage::getModel('opentools_ordernumber/ordernumber');
     }
 
-    public function getModel() {
+    public function getModel()
+    {
         if (is_null($this->_dbModel))
             $this->_dbModel = $this->_getModel();
         return $this->_dbModel;
     }
 
+    public function _construct()
+    {
+        parent::_construct();
+        $this->_init('ordernumber/ordernumber');
+    }
+
     /** This trigger is called directly after the increment ID is reserved for an order
      * Ideally, we would overwrite the reserveOrderId function, so that magento does not
      * create/reserve an order number in the first place
@@ -46,31 +48,37 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract
      * so we would have to hack (i.e. rewrite) many more models to pass on this information,
      * which will in the end lead to an even worse code quality...
      */
-    public function sales_model_service_quote_submit_before ($observer) {
+    public function sales_model_service_quote_submit_before ($observer)
+    {
         $order = $observer->getEvent()->getOrder();
         return $this->handle_new_number('order', $order, $order);
     }
-    public function sales_order_save_before ($observer) {
+    public function sales_order_save_before ($observer)
+    {
         $order = $observer->getEvent()->getOrder();
         return $this->handle_new_number('order', $order, $order);
     }
 
-    public function sales_order_invoice_save_before ($observer) {
+    public function sales_order_invoice_save_before ($observer)
+    {
         $invoice = $observer->getEvent()->getInvoice();
         return $this->handle_new_number('invoice', $invoice, $invoice->getOrder());
     }
 
-    public function sales_order_shipment_save_before ($observer) {
+    public function sales_order_shipment_save_before ($observer)
+    {
         $shipment = $observer->getEvent()->getShipment();
         return $this->handle_new_number('shipment', $shipment, $shipment->getOrder());
     }
 
-    public function sales_order_creditmemo_save_before ($observer) {
+    public function sales_order_creditmemo_save_before ($observer)
+    {
         $creditmemo = $observer->getEvent()->getCreditmemo();
         return $this->handle_new_number('creditmemo', $creditmemo, $creditmemo->getOrder());
     }
 
-    public function handle_new_number ($nrtype, $object, $order) {
+    public function handle_new_number ($nrtype, $object, $order)
+    {
         $store = $order->getStore();
         $storeId = $store->getStoreId();
         $cfgprefix = 'ordernumber/'.$nrtype.'numbers';
@@ -95,17 +103,27 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract
             // well as enum values indicating certain behavior. Replace those by the actual
             // counter names for the current counter:
             switch ($reset) {
-                case 0:  $format = $format . '|'; break;
-                case 1:  $format = $format . '|' . $format; break;
-                case -1: $format = $format . '|' . $counterfmt; break;
-                default: /* Pre-defined counter formats saved in the /reset config field */
-                    $counterfmt = $format . '|' . $reset; break;
+                case 0:
+                    $format = $format . '|';
+                    break;
+                case 1:
+                    $format = $format . '|' . $format;
+                    break;
+                case -1:
+                    $format = $format . '|' . $counterfmt;
+                    break;
+                default:
+                    /* Pre-defined counter formats saved in the /reset config field */
+                    $counterfmt = $format . '|' . $reset;
+                    break;
             }
             $customvars = Mage::getStoreConfig('ordernumber/replacements', $storeId);
-            if (isset($customvars['replacements']))
+            if (isset($customvars['replacements'])) {
                 $customvars = $customvars['replacements'];
-            if ($customvars)
+            }
+            if ($customvars) {
                 $customvars = unserialize($customvars);
+            }
 // Mage::Log('customvars: '.print_r($customvars,1), null, 'ordernumber.log');
 
             // Now apply the replacements
@@ -128,11 +146,11 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract
                 $count += 1;
 
                 // Find the next counter value
-                $scope_id = '';
-                if ($scope>=1) $scope_id = $store->getWebsiteId();
-                if ($scope>=2) $scope_id .= '/' . $store->getGroupId();
-                if ($scope>=3) $scope_id .= '/' . $store->getStoreId();
-                $count = $model->getCounterValueIncremented($nrtype, $counterfmt, $increment, $scope_id);
+                $scopeId = '';
+                if ($scope>=1) $scopeId = $store->getWebsiteId();
+                if ($scope>=2) $scopeId .= '/' . $store->getGroupId();
+                if ($scope>=3) $scopeId .= '/' . $store->getStoreId();
+                $count = $model->getCounterValueIncremented($nrtype, $counterfmt, $increment, $scopeId);
                 $newnumber = str_replace ("#", sprintf('%0' . (int)$digits . 's', $count), $format);
 
                 // Check whether that number is already in use. If so, attempt to create the next number:
@@ -148,7 +166,7 @@ class OpenTools_Ordernumber_Model_Observer extends Mage_Core_Model_Abstract
                 }
             }
             if (!$created) {
-                Mage::Log("Unable to create $nrtype number for counter format $nr (name $counterfmt, scope $scope_id)...", null, 'ordernumber.log');
+                Mage::Log("Unable to create $nrtype number for counter format $nr (name $counterfmt, scope $scopeId)...", null, 'ordernumber.log');
             }
         }
     }
diff --git a/app/code/community/OpenTools/Ordernumber/Model/Ordernumber.php b/app/code/community/OpenTools/Ordernumber/Model/Ordernumber.php
index 77fd249adae7940397916cfab26532110a010ce9..a162d93ef25451670aff18df4edccfebac6ab600 100644
--- a/app/code/community/OpenTools/Ordernumber/Model/Ordernumber.php
+++ b/app/code/community/OpenTools/Ordernumber/Model/Ordernumber.php
@@ -8,21 +8,23 @@ class OpenTools_Ordernumber_Model_Ordernumber extends Mage_Core_Model_Abstract
          parent::_construct();
          $this->_init('opentools_ordernumber/ordernumber');
      }
-     public function getCounterValueIncremented($nrtype, $format, $increment=1, $scope_id='') {
+     public function getCounterValueIncremented($nrtype, $format, $increment=1, $scopeId='')
+     {
         $helper = Mage::helper('ordernumber');
-        $this->loadNumberCounter($nrtype, $format, $scope_id);
-
-        $this->setNumberScope($scope_id);
+        $this->loadNumberCounter($nrtype, $format, $scopeId);
+$helper->logitem("Loaded counter: ", $this);
+        $this->setNumberScope($scopeId);
         $this->setNumberType($nrtype);
         $this->setNumberFormat($format);
         $count = $this->getCount() + $increment;
         $this->setCount($count);
         $res = $this->save();
+$helper->logitem("Saved counter: ", $res);
         return $count;
      }
-    public function loadNumberCounter($nrtype, $format, $scope_id='')
+    public function loadNumberCounter($nrtype, $format, $scopeId='')
     {
-        $this->_getResource()->loadNumberCounter($this, $nrtype, $format, $scope_id);
+        $this->_getResource()->loadNumberCounter($this, $nrtype, $format, $scopeId);
         $this->_afterLoad();
         $this->setOrigData();
         $this->_hasDataChanges = false;
@@ -52,8 +54,9 @@ class OpenTools_Ordernumber_Model_Ordernumber extends Mage_Core_Model_Abstract
             $helper = Mage::helper('ordernumber');
 
             return $helper->__('Global');
-        } else
+        } else {
             return $scope;
+        }
     }
 
 }
diff --git a/app/code/community/OpenTools/Ordernumber/Model/Resource/Ordernumber.php b/app/code/community/OpenTools/Ordernumber/Model/Resource/Ordernumber.php
index a0ad25d5937fd21b845cd60b20e8743be1ce4b2b..35c92c75cf2c22a467617399652c0cb9f803e683 100644
--- a/app/code/community/OpenTools/Ordernumber/Model/Resource/Ordernumber.php
+++ b/app/code/community/OpenTools/Ordernumber/Model/Resource/Ordernumber.php
@@ -1,11 +1,13 @@
 <?php
 class OpenTools_Ordernumber_Model_Resource_Ordernumber extends Mage_Core_Model_Resource_Db_Abstract
 {
-     public function _construct() {
+     public function _construct()
+     {
          $this->_init('opentools_ordernumber/ordernumber', 'ordernumber_id');
      }
 
-    public function loadNumberCounter(Mage_Core_Model_Abstract $object, $nrtype, $format, $scope='') {
+    public function loadNumberCounter(Mage_Core_Model_Abstract $object, $nrtype, $format, $scope='')
+    {
         $read = $this->_getWriteAdapter();
         if ($read && !is_null($nrtype)) {
             $typefield = $read->quoteIdentifier(sprintf('%s.%s', $this->getMainTable(), 'number_type'));
@@ -38,4 +40,4 @@ class OpenTools_Ordernumber_Model_Resource_Ordernumber extends Mage_Core_Model_R
 
         return $this;
     }
-}
\ No newline at end of file
+}
diff --git a/app/code/community/OpenTools/Ordernumber/Model/Resource/Ordernumber/Collection.php b/app/code/community/OpenTools/Ordernumber/Model/Resource/Ordernumber/Collection.php
index f12f1ff21ada44fea3d3c04e38ebe9b2b377d0d9..5339869059a2f9bc6eb020867e69f8c7ff13e845 100644
--- a/app/code/community/OpenTools/Ordernumber/Model/Resource/Ordernumber/Collection.php
+++ b/app/code/community/OpenTools/Ordernumber/Model/Resource/Ordernumber/Collection.php
@@ -1,7 +1,8 @@
 <?php
 class OpenTools_Ordernumber_Model_Resource_Ordernumber_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
- {
-     public function _construct() {
+{
+     public function _construct()
+     {
          parent::_construct();
          $this->_init('opentools_ordernumber/ordernumber');
      }
diff --git a/app/code/community/OpenTools/Ordernumber/Model/Source/Reset.php b/app/code/community/OpenTools/Ordernumber/Model/Source/Reset.php
index 669d2e26c4be738d5ad6f57b1b80670d764a0b0e..f163e428d33b8517f26063244661682ab6a6faf8 100644
--- a/app/code/community/OpenTools/Ordernumber/Model/Source/Reset.php
+++ b/app/code/community/OpenTools/Ordernumber/Model/Source/Reset.php
@@ -11,7 +11,7 @@ class OpenTools_Ordernumber_Model_Source_Reset
             array('value' => '[year]-[month]', 'label' => $helper->__('New counter for each month')),
             array('value' => '[year]-[month]-[day]', 'label' => $helper->__('New counter for each day')),
             array('value' => '1', 'label' => $helper->__('Separate counter for each Format Value')),
-        	array('value' => '-1', 'label' => $helper->__('Custom counter Name')),
+            array('value' => '-1', 'label' => $helper->__('Custom counter Name')),
         );
         return $reset;
     }
diff --git a/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php b/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php
index 2de52cba5ce32976e2cfa883dd5d55044253f6fd..d464bd41e3ffb0f5893a9cca10e3710d94a46f6d 100644
--- a/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php
+++ b/app/code/community/OpenTools/Ordernumber/sql/opentools_ordernumber_setup/install-0.1.0.php
@@ -1,6 +1,7 @@
 <?php
-/** Ordernmber installation script
- *  @author OpenTools
+/**
+ * Ordernmber installation script
+ * @author OpenTools
  */
 /**
  * @var $installer Mage_Core_Model_Resource_Setup
@@ -18,10 +19,10 @@ $table = $installer->getConnection()
         'nullable' => false,
         'primary'  => true,
     ), 'Ordernumber id')
-    ->addColumn('number_type',  Varien_Db_Ddl_Table::TYPE_TEXT,      63, array('nullable'=> false),                 'Number Type')
-    ->addColumn('number_scope', Varien_Db_Ddl_Table::TYPE_TEXT,      20, array('nullable'=> true, 'default'=>''),   'Number Scope')
-    ->addColumn('number_format',Varien_Db_Ddl_Table::TYPE_TEXT,     255, array('nullable'=> true, 'default'=>''),   'Number Format')
-    ->addColumn('count',        Varien_Db_Ddl_Table::TYPE_INTEGER, null, array('unsigned'=>true,'nullable'=>false), 'Counter')
+    ->addColumn('number_type',   Varien_Db_Ddl_Table::TYPE_TEXT,      63, array('nullable'=> false),                  'Number Type')
+    ->addColumn('number_scope',  Varien_Db_Ddl_Table::TYPE_TEXT,      20, array('nullable'=> true, 'default'=>''),    'Number Scope')
+    ->addColumn('number_format', Varien_Db_Ddl_Table::TYPE_TEXT,     255, array('nullable'=> true, 'default'=>''),    'Number Format')
+    ->addColumn('count',         Varien_Db_Ddl_Table::TYPE_INTEGER, null, array('unsigned'=>true, 'nullable'=>false), 'Counter')
     ->addIndex($installer->getIdxName(
             $installer->getTable('opentools_ordernumber/ordernumber'),
             array('number_type', 'number_scope', 'number_format'),
diff --git a/var/connect/OpenTools_Ordernumber.xml b/var/connect/OpenTools_Ordernumber.xml
index 5c281e47da67f985568ebe8a7ca41ea3cc0fef3c..7df09591f051fb774f3c4ef79579534db7156bc7 100644
--- a/var/connect/OpenTools_Ordernumber.xml
+++ b/var/connect/OpenTools_Ordernumber.xml
@@ -1,5 +1,5 @@
 <_>
-   <form_key>BdrKY2F3O8Sn4JoR</form_key>
+   <form_key>QQD0m3HjqYDMtc0C</form_key>
    <name>OpenTools_Ordernumber</name>
    <channel>community</channel>
    <version_ids>
@@ -42,7 +42,7 @@ All number types should be correctly implemented, variable substitutions are ava
             <max/>
          </max>
          <files>
-            <files>              </files>
+            <files>                  </files>
          </files>
       </package>
       <extension>