<?php
/**
 * Mehulchaudhari FeedsGenerator Extension
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 *
 * @category   Mehulchaudhari
 * @package    Mehulchaudhari_FeedsGenerator
 * @author     Mehul Chaudhari
 * @author     Mehul Chaudhari
 * @copyright  Copyright (c) 2014 ; ;
 * @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */

$_htmlId = $this->getHtmlId() ? $this->getHtmlId() : '_' . uniqid();

$_colspan = 2;
if (!$this->_addAfter) {
    $_colspan -= 1;
}
$_colspan = $_colspan > 1 ? 'colspan="' . $_colspan . '"' : '';
?>

<div class="grid" id="grid<?php echo $_htmlId ?>">
    <table cellpadding="0" cellspacing="0" class="border">
        <tbody>

            <tr class="headings" id="headings<?php echo $_htmlId ?>">
<?php foreach ($this->_columns as $columnName => $column):?>
                <th><?php echo $column['label'] ?></th>
<?php endforeach;?>
                <th <?php echo $_colspan?>></th>
            </tr>

            <tr id="addRow<?php echo $_htmlId ?>">
                <td colspan="<?php echo count($this->_columns) ?>"></td>
                <td <?php echo $_colspan?>>
                    <button style="" onclick="" class="scalable add" type="button" id="addToEndBtn<?php echo $_htmlId ?>">
                        <span><?php echo $this->_addButtonLabel ?></span>
                    </button>
                </td>
            </tr>

        </tbody>
    </table>
    <input type="hidden" name="<?php echo $this->getElement()->getName() ?>[__empty]" value="" />
</div>
<div id="empty<?php echo $_htmlId ?>">
    <button style="" onclick="" class="scalable add" type="button" id="emptyAddBtn<?php echo $_htmlId ?>">
        <span><?php echo $this->_addButtonLabel ?></span>
    </button>
</div>

<script type="text/javascript">
// <!--
// create row creator
var arrayRow<?php echo $_htmlId ?> = {
    // define row prototypeJS template
    template : new Template(
        '<tr id="#{_id}">'
<?php foreach ($this->_columns as $columnName => $column):?>
            +'<td class="#{_id}-<?php echo $columnName?>">'
                +'<?php echo $this->_renderCellTemplate($columnName)?>'
            +'</td>'
<?php endforeach;?>
<?php if ($this->_addAfter):?>
            +'<td><button onclick="" class="scalable add" type="button" id="addAfterBtn#{_id}"><span><?php echo Mage::helper('adminhtml')->__('Add after') ?></span></button></td>'
<?php endif;?>
            +'<td><button onclick="arrayRow<?php echo $_htmlId ?>.del(\'#{_id}\')" class="scalable delete" type="button"><span><?php echo Mage::helper('adminhtml')->__('Delete') ?></span></button></td>'
        +'</tr>'
    ),

    rowsCount : 0,

    add : function(templateData, insertAfterId)
    {
        // generate default template data
        if ('' == templateData) {
            var d = new Date();
            var templateData = {
<?php foreach ($this->_columns as $columnName => $column):?>
                <?php echo $columnName ?> : '',
<?php endforeach;?>
                _id : '_' + d.getTime() + '_' + d.getMilliseconds()
            };
        }

        // insert before last row
        if ('' == insertAfterId) {
            new Insertion.Before(
                $('addRow<?php echo $_htmlId ?>'),
                this.template.evaluate(templateData)
            );
        }
        // insert after specified row
        else {
            new Insertion.After(
                $(insertAfterId),
                this.template.evaluate(templateData)
            );
        }
        // set the selected drop-down list item
<?php foreach ($this->_columns as $columnName => $column):?>
        var options = $$('td.' + templateData._id + '-' + '<?php echo $columnName?>' + ' option')
        for(var index = 0; index < options.length; ++index)
        {
            var option = options[index]
            if(option.getAttribute('value') == templateData.<?php echo $columnName?>)
            {
                option.selected = true
            }
        }
<?php endforeach;?>

<?php if ($this->_addAfter):?>
        Event.observe('addAfterBtn' + templateData._id, 'click', this.add.bind(this, '', templateData._id));
<?php endif;?>

        this.rowsCount += 1;
    },

    del : function(rowId)
    {
        $(rowId).remove();
        this.rowsCount -= 1;
        if (0 == this.rowsCount) {
            this.showButtonOnly();
        }
    },

    showButtonOnly : function()
    {
        $('grid<?php echo $_htmlId ?>').hide();
        $('empty<?php echo $_htmlId ?>').show();
    }
}

// bind add action to "Add" button in last row
Event.observe('addToEndBtn<?php echo $_htmlId ?>', 'click', arrayRow<?php echo $_htmlId ?>.add.bind(arrayRow<?php echo $_htmlId ?>, '', ''));

// add existing rows
<?php
$_addAfterId = "headings{$_htmlId}";
foreach ($this->getArrayRows() as $_rowId => $_row) {
    echo "arrayRow{$_htmlId}.add(" . $_row->toJson() . ", '{$_addAfterId}');\n";
    $_addAfterId = $_rowId;
}
?>

// initialize standalone button
$('empty<?php echo $_htmlId ?>').hide();
Event.observe('emptyAddBtn<?php echo $_htmlId ?>', 'click', function () {
    $('grid<?php echo $_htmlId ?>').show();
    $('empty<?php echo $_htmlId ?>').hide();
    arrayRow<?php echo $_htmlId ?>.add('', '');
});

// if no rows, hide grid and show button only
<?php if (!$this->getArrayRows()):?>
arrayRow<?php echo $_htmlId ?>.showButtonOnly();
<?php endif;?>

// toggle the grid, if element is disabled (depending on scope)
<?php if ($this->getElement()->getDisabled()):?>
toggleValueElements({checked:true}, $('grid<?php echo $_htmlId ?>').parentNode);
<?php endif;?>
// -->
</script>
