<#--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<script language="JavaScript" type="text/javascript">
     function changeEbayCategory(categ) {
         document.forms["ProductsExportToEbay"].action = "<@ofbizUrl>ProductsExportToEbay?categoryCode="+categ+"</@ofbizUrl>";
         document.forms["ProductsExportToEbay"].submit();
     }

    function changeWebSite(Id) {
        var formId = Id ;
        formId.action="<@ofbizUrl>ProductsExportToEbay</@ofbizUrl>";
        formId.submit();
    }

     function activateSubmitButton() {
         categ = document.forms["ProductsExportToEbay"].ebayCategory.value;
         if (document.forms["ProductsExportToEbay"].submitButton) {
             if (categ != null && (categ.substring(0, 1) == 'Y' || categ == '')) {
                 document.forms["ProductsExportToEbay"].submitButton.disabled = false;
             } else {
                 document.forms["ProductsExportToEbay"].submitButton.disabled = true;
                 document.forms["ProductsExportToEbay"].submitButton.value = "Please select a category";
             }
         }
    }
</script>
<div>
    <form id="ProductsExportToEbay" method="post" action="<@ofbizUrl>PostProductsToEbay</@ofbizUrl>" name="ProductsExportToEbay">
        <input type="hidden" name="productStoreId" value="${productStoreId?if_exists}" />
        <table border="0" cellpadding="2" cellspacing="0">
             <tr>
                <td align="right" class="label">${uiLabelMap.FormFieldTitle_ebayCategory}</td>
                <td>&nbsp;</td>
                <td>
                    <input type="hidden" name="selectResult" value="${selectResult?if_exists}"/>
                    <select name="ebayCategory" onchange="changeEbayCategory(this.value)">
                        <option value=""> </option>
                        <#if categories?exists>
                            <#list categories as category>
                                <option value="${category.CategoryCode}" <#if categoryCode?exists && categoryCode == category.CategoryCode>selected="selected"</#if>>${category.CategoryName}</option>
                            </#list>
                        </#if>
                    </select>
                </td>
            </tr>
            <#if hideExportOptions?has_content && hideExportOptions == "N">
            <tr>
                <td align="right" class="label">${uiLabelMap.CommonCountry}</td>
                <td>&nbsp;</td>
                <td>
                    <select name="country">
                        <#if countries?exists>
                            <#list countries as country>
                                <option value="${country.geoCode}" <#if countryCode?exists && countryCode == country.geoCode>selected="selected"</#if>>${country.get("geoName",locale)}</option>
                            </#list>
                        </#if>
                    </select>
                </td>
            </tr>
            <tr>
                <td align="right" class="label">${uiLabelMap.FormFieldTitle_location}</td>
                <td>&nbsp;</td>
                <td>
                    <input type="text" name="location" size="50" maxlength="50" value="${parameters.location?if_exists}" />
                </td>
            </tr>
            <tr>
                <td align="right" class="label">${uiLabelMap.FormFieldTitle_listingDuration}</td>
                <td>&nbsp;</td>
                <td>
                    <select name="listingDuration">
                        <option value="Days_1">1 ${uiLabelMap.CommonDay}</option>
                        <option value="Days_3">3 ${uiLabelMap.CommonDays}</option>
                        <option value="Days_7">7 ${uiLabelMap.CommonDays}</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td align="right" class="label">${uiLabelMap.FormFieldTitle_startPrice}</td>
                <td>&nbsp;</td>
                <td>
                    <input type="text" name="startPrice" size="12" maxlength="12" value="${parameters.startPrice?if_exists}" />
                </td>
            </tr>
            <tr>
                <td align="right" class="label">${uiLabelMap.CommonQuantity}</td>
                <td>&nbsp;</td>
                <td>
                    <input type="text" name="quantity" size="12" maxlength="12" value="<#if parameters.quantity?exists>${parameters.quantity?if_exists}<#else>1</#if>" />
                </td>
            </tr>
            <tr>
                <td align="right" class="label">${uiLabelMap.CommonWebsite}</td>
                <td>&nbsp;</td>
                <td>
                  <select name="webSiteId" onchange="javascript:changeWebSite(document.getElementById('ProductsExportToEbay'));">
                    <#list webSiteList as webSite>
                      <#assign displayDesc = webSite.siteName?default("${uiLabelMap.ProductNoDescription}")>
                      <#if (18 < displayDesc?length)>
                        <#assign displayDesc = displayDesc[0..15] + "...">
                      </#if>
                      <option value="${webSite.webSiteId}" <#if selectedWebSiteId?if_exists == webSite.webSiteId> selected="selected"</#if>>${displayDesc} [${webSite.webSiteId}]</option>
                    </#list>
                  </select>
                </td>
            </tr>
            <tr>
                <td align="right" class="label">${uiLabelMap.FormFieldTitle_webSiteUrl}</td>
                <td>&nbsp;</td>
                <td>
                    <input type="text" name="webSiteUrl" size="100" value="${webSiteUrl?if_exists}"/>
                </td>
            </tr>
            <tr>
                <td align="center" colspan="3"><b><u>${uiLabelMap.FormFieldTitle_paymentMethodsAccepted}</u></b></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td colspan="3">
                    <table class="basic-table" cellspacing="0">
                        <tr>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentPayPal}</td>
                            <td width="2%"><input type="checkbox" name="paymentPayPal" <#if parameters.paymentPayPal?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentVisaMC}</td>
                            <td width="2%"><input type="checkbox" name="paymentVisaMC" <#if parameters.paymentVisaMC?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentAmEx}</td>
                            <td width="2%"><input type="checkbox" name="paymentAmEx" <#if parameters.paymentAmEx?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentDiscover}</td>
                            <td width="2%"><input type="checkbox" name="paymentDiscover" <#if parameters.paymentDiscover?exists>checked="checked"</#if> /></td>
                        </tr>
                        <tr>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentMOCC}</td>
                            <td width="2%"><input type="checkbox" name="paymentMOCC" <#if parameters.paymentMOCC?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentPersonalCheck}</td>
                            <td width="2%"><input type="checkbox" name="paymentPersonalCheck" <#if parameters.paymentPersonalCheck?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCCAccepted}</td>
                            <td width="2%"><input type="checkbox" name="paymentCCAccepted" <#if parameters.paymentCCAccepted?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCashInPerson}</td>
                            <td width="2%"><input type="checkbox" name="paymentCashInPerson" <#if parameters.paymentCashInPerson?exists>checked="checked"</#if> /></td>
                        </tr>
                        <tr>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCashOnPickup}</td>
                            <td width="2%"><input type="checkbox" name="paymentCashOnPickup" <#if parameters.paymentCashOnPickup?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCOD}</td>
                            <td width="2%"><input type="checkbox" name="paymentCOD" <#if parameters.paymentCOD?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentCODPrePayDelivery}</td>
                            <td width="2%"><input type="checkbox" name="paymentCODPrePayDelivery" <#if parameters.paymentCODPrePayDelivery?exists>checked="checked"</#if> /></td>
                            <td align="right" width="23%" class="label">${uiLabelMap.FormFieldTitle_paymentMoneyXferAccepted}</td>
                            <td width="2%"><input type="checkbox" name="paymentMoneyXferAccepted" <#if parameters.paymentMoneyXferAccepted?exists>checked="checked"</#if> /></td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr>
                <td align="right" class="label">${uiLabelMap.FormFieldTitle_payPalEmail}</td>
                <td>&nbsp;</td>
                <td>
                    <input type="text" name="payPalEmail" size="50" maxlength="50" value="${parameters.payPalEmail?if_exists}" />
                </td>
            </tr>
            <tr>
                <td align="right" class="label">${uiLabelMap.FormFieldTitle_customXml}</td>
                <td>&nbsp;</td>
                <td>
                    <textarea cols="60" rows="6" wrap="soft" name="customXml">${customXml?if_exists}</textarea>
                </td>
            </tr>
            <tr>
                <td colspan=2>&nbsp;</td>
                <td>
                    <input type="submit" value="${uiLabelMap.EbayExportToEbay}" name="submitButton" class="smallSubmit" />
                </td>
            </tr>
            </#if>
        </table>
    </form>
    <script language="JavaScript" type="text/javascript">
        activateSubmitButton();
    </script>
</div>
