<?php
require_once APPLICATION_PATH . '/modules/alw/views/helpers/Loadjs.php';
require_once APPLICATION_PATH . '/modules/alw/views/helpers/Loadingimage.php';

use Orchard\Feature\Feature;
use Orchard\Service\AUser;

$lastUpdatedDate = '2016-12-22';
$isProjectMode = Zend_Registry::get('UserObj')->isAllowed(null, null, 'uiproject');
if ($isProjectMode) {
    $fileVersion = '/orchard_meta_template_v1.24.xls';
    $lastUpdatedDate = '2018-11-27';
} else {
    $fileVersion = '/orchard_meta_template_v1.14.xls';
    $lastUpdatedDate = '2017-07-20';
}
$panelDefault = 'panel-default';

if ($this->isHelpcenterAutoLoginEnabled) {
    $helpCenterUrl = '/helpcenter/?redirectUrl=category/music-distribution/digital-audio-releases&hash=bulk-uploads';
} else {
    $helpCenterUrl = $this->helpcenterUrl . '/category/music-distribution/digital-audio-releases/#bulk-uploads';
    $workstationLanguage = $_SESSION['S_LANGUAGE'];
    $helpCenterUrl = $this->helpcenterUrl . '/category/music-distribution-' . $workstationLanguage .'/digital-audio-releases-' . $workstationLanguage .'/' . '?lang=' . $workstationLanguage . '#bulk-uploads';
}

if ($this->newBulkUploadFeatureControlEnabled) {
    $bulkUploadPageUrl = '/create/digital-audio/bulk';
}

$loadjs = new Zend_View_Helper_loadjs();
$loadimage = new Alw_View_Helper_Loadingimage();

if (APPLICATION_ENV != 'development') {
    $alwMaskPath = $loadjs->getCdnAlwScriptPath('mask.js');
    $resumablePath = $loadjs->getCdnScriptPath('resumable.js');
    $loadingImagePath = $loadimage->getCdnImagePath('loading.gif');
    $bulk1ProjectCodePath = $loadimage->getCdnAlwImagePath('bulk1_project_code.gif');
    $bulk1Path = $loadimage->getCdnAlwImagePath('bulk1.gif');
    $bulk2Html5ParentPath = $loadimage->getCdnAlwImagePath('bulk2_html5_parent.png');
    $bulk2Html5ReleasesPath = $loadimage->getCdnAlwImagePath('bulk2_html5_releases.png');
} else {
    $alwMaskPath = '/alw/scripts/mask.js';
    $resumablePath = '/scripts/resumable.js';
    $loadingImagePath = '/images/loading.gif';
    $bulk1ProjectCodePath = '/alw/images/screengrabs/bulk1_project_code.gif';
    $bulk1Path = '/alw/images/screengrabs/bulk1.gif';
    $bulk2Html5ParentPath = '/alw/images/screengrabs/bulk2_html5_parent.png';
    $bulk2Html5ReleasesPath = '/alw/images/screengrabs/bulk2_html5_releases.png';
}

?>
<iframe style="display:none" id="spreadsheet_upload_iframe" name="spreadsheet_upload_iframe"></iframe>
<script type="text/javascript" src="<? echo $alwMaskPath ?>"></script>
<script src="<? echo $resumablePath ?>"></script>
<div id="loading_image" style="left: 44%; display: none; padding: 10px; border: 1px solid gray; position: absolute; background-color: #ffffff; text-align: center;width:240px"><b><?=$this->translate->_("Loading")?>...</b>
    <br>
    <img src="<? echo $loadingImagePath ?>" />
</div>

<style>
#loading_image p {
    margin:10px auto
}
</style>
<!-- Start Content-->
<div id="content">
    <div id="bread">
        <a href="/index/viewexareleases">
            <?php echo $this->translate('Releases')?>
        </a>
    </div>
    <?php if ($this->isCcmBulkbannerWorkstationEnabled && $this->newBulkUploadFeatureControlEnabled) { ?>
    <div class="info-banner">
      <div class="info-left">
        <span class="info-icon">ℹ️</span>
        <div class="info-text">
          <strong>🚀 We have a new and improved Bulk Uploader!</strong>
          <div>If you want faster uploads and better feedback, try it out now!</div>
        </div>
      </div>
      <button class="info-btn" onclick="location.href='<?=$bulkUploadPageUrl?>'">
        TRY NOW
      </button>

    </div>
    <? } ?>

    <h1><?=$this->translate('Create Multiple Releases')?></h1>

    <!-- If FeatureFlag 'allow_update_oa_bulk_upload_feature' enabled for current alw user -->
    <?php if ($this->disableBulkUploader) { ?>
        <h2><?=$this->translate->_("This feature is not currently available, please contact your label manager")?></h2>
    <?php } else { ?>

        <div class="faqLink"><?=$this->translate('Need help with Release Builder')?>?
            <a href="<?=$helpCenterUrl?>"><?=$this->translate('Click here')?>.</a>
        </div>
        <div class="clear"></div>
        <!--Start Metadata-->
        <form name="spreadsheet_upload_form" id="spreadsheet_upload_form" method="post" action="/multiplereleases/uploadspreadsheet" enctype="multipart/form-data" target="spreadsheet_upload_iframe">
            <div style="width:155px;height:0px;overflow:hidden;">
                <input style="cursor:pointer;display:none;width:263px;height:48px;top:-5px;position:absolute;" id="spreadsheetupload" name="spreadsheetupload" type="file" size="22" onchange="submitSpreadsheet()"/>
            </div>
        </form>
        <div class="uploadMetadata">
            <h2><?=$this->translate->_("Upload Your Metadata")?></h2>
            <div class="uploadMetadataSpreadsheet float-left">
                <p class="lead">
                <?php if ($isProjectMode) { ?>
                    <?=$this->translate->_("When setting up your metadata, make sure to include a Folder Name / Project Code for every release in your spreadsheet. Folder Name / Project Code and file names in the spreadsheet will need to match up with the folder names, audio file names and artwork files you'll be uploading below.")?>
                <?php } else { ?>
                    <?=$this->translate->_("When setting up your metadata, make sure to include a label catalog number for every release in your spreadsheet. Label catalog numbers and file names in the spreadsheet will need to match up with the folder names, audio file names and artwork files you'll be uploading below.")?>
                <?php } ?>
                </p>
            </div>

            <div class="spread_beforeYouBegin float-left">
                <div class="newSpreadsheet">
                    <button class="btn btn-primary" onmouseover="moveSpreadsheetUploadBtn()">
                        <span id="import_a_spreadsheet_button"><?=$this->translate('Upload Your Spreadsheet')?></span>
                    </button> <?php
                    if ($this->isLimitBulkUploaderToFiveHundredRowsEnabled) { ?>
                        <div class="bottomMargin"><em class="subheading">Your spreadsheet must not have more than 500 rows</em></div> <?php
                    } else { ?>
                        <div class="bottomMargin"><em class="subheading">Your spreadsheet should not have more than 5000 rows</em></div> <?php
                    } ?>
                    <a href="<?=$fileVersion?>" class="btn btn-default">
                    <?php
                    echo $this->translate('Download the Metadata Template');
                    ?>
                    </a>
                    <em class="subheading lastUpdated pull-left"><?=$this->translate('Last updated')?>: <?=$lastUpdatedDate?></em>
                </div>
            </div>

            <div class="clear"></div>

            <div id="updated_releases_table" style="display: none">
                <div class="uploadMetadataResults">
                    <p id="import_success_msg" class="actionCompleteLarge">
                        <span class="old_filename"></span>
                        <?=$this->translate->_("was imported successfully")?>!
                    </p>
                    <p><?=$this->translate->_("Below is a list of releases that have been created")?>.</p>
                    <table class="homepageTable table table-sorter">
                    <thead>
                    <tr>
                        <th class="ri text-left"><?=$this->translate->_("Release Name")?></th>
                        <th class="text-left"><?=$this->translate->_("Artist Name")?></th>
                        <th class="text-left"><?=$this->translate->_("Release Date")?></th>
                        <?php if ($isProjectMode) { ?>
                            <th class="text-left"><?=$this->translate->_('Folder Name / Project Code')?></th>
                            <th class="text-left"><?=$this->translate->_('Product Code')?></th>
                        <?php } else { ?>
                            <th class="text-left"><?=$this->translate->_('Label Catalog Number')?></th>
                            <th class="rd"><?=$this->translate->_('Version')?></th>
                        <?php } ?>

                    </tr>
                    </thead>
                    <tbody id="update_releases_table_tbody"></tbody>
                    </table>
                </div>
            </div>

            <div id="uploadMetadataErrors" class="uploadMetadataResults">
                <p class="actionNotCompleteLarge">
                    <span class='old_filename'></span>
                    <span id="error_number"></span>
                </p>
                <p id="pleaseFixSpreadsheet">
                    <?=$this->translate->_("Please fix the following errors and re-upload the spreadsheet")?>.
                </p>
                <div class="uploadMetadataErrorsTables">
                    <div class="resultsTable">
                        <table>
                        <tbody id="error_releases"></tbody>
                        </table>
                    </div>
                </div>

                <div class="clear"></div>

            </div>
        </div>
        <!--End Metadata-->

        <!--Start Assets-->
        <h2><?=$this->translate('Upload Your Art and Audio')?></h2>
        <?php
        if (!$this->deprecateJavaUploaderEnabled) { ?>
            <ul id="switchtabs" class="switch-tabs">
                <li><a href="#htmltab" id="htmltab"><?=$this->translate('HTML5 Uploader (beta - Chrome only)')?></a></li>
                <li><a href="#javatab" id="javatab" class="inactive"><?=$this->translate('Java Uploader (all browsers)')?></a></li>
            </ul>
        <?php
        }
        if ($this->deprecateJavaUploaderEnabled) { ?>
            <div class="panel <?=$panelDefault?>" style="border: none; padding:0">
        <?php
        } else { ?>
            <div class="panel <?=$panelDefault?>">
        <?php
        }
        if (!$this->deprecateJavaUploaderEnabled) { ?>
            <div class="panel-body">
        <?php
        } ?>
        <div id="html5UploadAssets" class="uploadAssets">
            <div class="uploadMetadataSpreadsheetBtn float-right">
                <button id="assetUploadBtn" class="btn btn-default cta" onmouseover="moveAssetUploadBtn()">
                    <b id="import_assets_button" class="uploadFolderBtnText"><?=$this->translate('Select Your Folder')?></b>
                </button>
                <div class="uploadButtonDescription float-right">
                    <?php
                    if (isset($this->chromeEnabled) && $this->chromeEnabled) {
                        echo '<p>';
                        echo $this->translate->_('Select the parent folder containing the ');
                        echo $this->translate->_('release folders, not the release folders themselves.');
                        echo "</p>";
                    } else {
                        echo "<p>";
                        echo $this->translate->_('This button is disabled because while this feature ');
                        echo $this->translate->_('works reliably in Google Chrome, it doesn\'t on other ');
                        if ($this->deprecateJavaUploaderEnabled) {
                            echo $this->translate('HTML5 compliant browsers. ');
                            echo $this->translate('Download Chrome ');
                        } else {
                            echo $this->translate('HTML5 compliant browsers. If you are having trouble with ');
                            echo $this->translate('the Java uploader, download Chrome ');
                        }
                        echo "<a href='http://www.google.com/chrome'>".$this->translate->_('here')."</a>";
                        echo $this->translate->_(' and try uploading with this tool again.');
                        echo "</p>";
                    }
                    ?>
                </div>
            </div>

            <div class="bulk_beforeYouBegin float-left">
                <div class="uploadAudioArtFiles">
                <p class="lead">
                <?php if ($isProjectMode) { ?>
                    <?=$this->translate('When uploading Art and Audio in bulk, make sure your release folders, audio files and art files are named properly according to the Folder Name / Project Code you entered in the metadata spreadsheet. These should all be within a parent folder. Please note that you are uploading art and audio to match the metadata from the spreadsheet you uploaded previously.')?>
                <?php } else { ?>
                    <?=$this->translate('When uploading Art and Audio in bulk, make sure your release folders, audio files and art files are named properly according to the label catalog numbers you entered in the metadata spreadsheet. Please note that you are uploading art and audio to match the metadata from the spreadsheet you uploaded previously.')?>
                <?php } ?>
                </p>
                </div>
                    <div class="spreadsheetGrab float-left">
                        <p><?=$this->translate('If your spreadsheet looks like this')?>:</p>
                        <?php if ($isProjectMode) { ?>
                            <p class="bottomMargin"><img src="<? echo $bulk1ProjectCodePath ?>"/></p>
                        <?php } else { ?>
                            <p class="bottomMargin"><img src="<? echo $bulk1Path ?>"/></p>
                        <?php } ?>

                    </div>
                    <div class="folderGrab float-right">
                        <p><?=$this->translate->_("Your parent folder should look like this:")?></p>
                        <p><img src="<? echo $bulk2Html5ParentPath ?>"/></p>
                        <p><?=$this->translate->_("Your release folders should look like this:")?></p>
                        <p><img src="<? echo $bulk2Html5ReleasesPath ?>"/></p>
                    </div>

            <div class="clear"></div>

            </div>

            <div class="uploadMetadataSpreadsheetBtn">
                <br />
                <div id="browseAudio">
                    <div style="width:155px;height:0px;overflow:hidden;">
                        <form name="assetUploadForm" id="asset_upload_form" method="POST" enctype='multipart/form-data'>
                            <input type="file" id="assets" name="assets" class="segment-analytics" data-event="click" data-event-category="Bulk Uploader" data-event-action="Select Folder" data-event-label="HTML5" style="display:none;cursor:pointer;width:250px;height:44px;position:absolute;" multiple webkitdirectory/>
                        </form>
                    </div>
                </div>
            </div>
            <div class="clear"></div>
            <li id="html5UploadArtAudioBulk" class="uploadArtAudioBulkResults" style="display: none">
                <div class="uploadArtAudioBulk">
                    <p id="html5ErrorValidationFailed" class="actionNotCompleteLarge" style="display: none"><?=$this->translate->_("Uh oh. We're experiencing a technical difficulty. Please try again in a little bit.")?></p>
                    <div id="html5UploadAssetErrors">
                        <p class="actionNotCompleteLarge"><?=$this->translate->_("Uh oh. The following files did not match with any metadata in our system.")?></p>
                        <p class="smalltext"><?=$this->translate->_("If you would like to upload these files, please upload a spreadsheet with the associated files, and try again. If you need more help,")?>
                            <a href="<?=$helpCenterUrl?>"><?=$this->translate('click here')?></a>.
                        </p>
                        <div id="html5ErrorAssetContainer" class="resultsTable uploadMetadataErrorsTables">
                            <table id="html5ErrorAssetTable" class="rowclick">
                                <tbody id="html5_error_asset_list">
                                </tbody>
                            </table>
                        </div>
                    </div>
                    <div id="assetErrorsFooterBorder" class="dottedborder" style="display:none"></div>
                    <div id="html5UploadAssetContainer">
                        <div id="html5FilesMatched">
                            <p class="textLarge"><?=$this->translate->_("Your files matched! The following files are now being uploaded.")?></p>
                            <p class="smalltext"><?=$this->translate->_("Please be patient as this could take a while depending on the amount of files and your internet connection speed.")?></p>
                        </div>
                        <div id="html5UploadAssetTable" class="resultsTable">
                            <table id="html5rowclick" class="rowclick">
                                <tbody id="html5_file_list">
                                </tbody>
                            </table>
                        </div>
                    </div>
                    <div id="html5ProgressBarContainer" class="progressBarContainerClassBG">
                        <div id="html5ProgressBar" class="progressBarContainerClass"></div>
                    </div>
                    <div id="html5_percent_done_label" class="uploadProgressPercentDone" style="display: none"></div>
                    <div id="html5PauseUploadBtn" class="roundedButtonsWrap">
                        <button id="html5PauseUpload" class="btn btn-default"><span id="html5PauseUploadTxt"><?=$this->translate('Pause Upload')?></span></button>
                    </div>
                    <p class="actionCompleteLarge" style="display: none;"><?=$this->translate('Upload Complete!')?><br/>
                        <span class="textReset"><a href="/index/viewexareleases?filterType=submitted,in_progress,error_correction,rejected&productType=1,2,3,5"><?=$this->translate->_("Click here")?></a> <?=$this->translate->_("to check and submit your releases")?>.</span>
                    </p>
                    <p id="html5_upload_error" class="actionNotCompleteLarge" style="display: none;"><?=$this->translate('Upload Error!')?><br/>
                        <span class="textReset"><?=$this->translate->_("There was error while uploading some files, please try again after some time.")?></span><br/>
                        <span class="textReset"><a href="/index/viewexareleases?filterType=submitted,in_progress,error_correction,rejected&productType=1,2,3,5"><?=$this->translate->_("Click here")?></a> <?=$this->translate->_("to check and submit your releases")?>.</span>
                    </p>
                </div>
            </li>
        </div>

        <?php
        if (!$this->deprecateJavaUploaderEnabled) { ?>
        <div id="javaUploadAssets" class="uploadAssets" <?php echo (isset($this->chromeEnabled) && $this->chromeEnabled) ? "style=\"display : none;\"" : ""; ?>>
            <div class="uploadMetadataSpreadsheetBtn float-right">
                <div id="browseAudio">
                    <button id="browseAudioBtn" class="btn btn-default cta segment-analytics" data-event="click" data-event-category="Bulk Uploader" data-event-action="Select Folder" data-event-label="Java" onclick="browsefiles();">
                        <?=$this->escapejs($this->translate('Select Your Folders'))?>
                    </button>
                </div>
            </div>

            <div class="bulk_beforeYouBegin float-left">
                <div class="uploadAudioArtFiles">
                    <p class="lead">
                        <?=$this->translate->_("When uploading Art and Audio in bulk, make sure your release folders, audio files and art files are named properly according to the label catalog numbers you entered in the metadata spreadsheet. Please note that you are uploading art and audio to match the metadata from the spreadsheet you uploaded previously.")?>
                    </p>
                </div>
                <div class="spreadsheetGrab float-left">
                    <p><?=$this->translate->_("If your spreadsheet looks like this:")?></p>
                    <img src="/images/screengrabs/bulk1.gif"/>
                </div>
                <div class="folderGrab float-right">
                    <p><?=$this->translate->_("Your folder should look like this:")?></p>
                    <img src="/images/screengrabs/bulk2.jpg"/>
                </div>
                <div class="clear"></div>
            </div>

            <div class="clear"></div>

            <div id="uploadArtAudioBulk" class="uploadArtAudioBulkResults" style="display: none">
                <div class="uploadArtAudioBulk">
                    <p id="errorValidationFailed" class="actionNotCompleteLarge" style="display: none">
                        <?=$this->translate->_("Uh oh. We're experiencing a technical difficulty. Please try again in a little bit.")?>
                    </p>
                    <div id="uploadAssetErrors">
                        <p class="actionNotCompleteLarge">
                            <?=$this->translate->_("Uh oh. The following files did not match with any metadata in our system.")?>
                        </p>
                        <p class="smalltext">
                            <?=$this->translate->_("If you would like to upload these files, please upload a spreadsheet with the associated files, and try again. If you need more help,")?>
                            <a href="<?=$helpCenterUrl?>"><?=$this->translate('click here')?></a>.
                        </p>
                        <div id="errorAssetContainer" class="resultsTable uploadMetadataErrorsTables">
                            <table id="errorAssetTable" class="rowclick">
                                <tbody id="error_asset_list"></tbody>
                            </table>
                        </div>
                    </div>
                    <div id="uploadAssetContainer">
                        <div id="filesMatched">
                            <p class="textLarge">
                                <?=$this->translate->_("Your files matched! The following files are now being uploaded.")?>
                            </p>
                            <p class="smalltext">
                                <?=$this->translate->_("Please be patient as this could take a while depending on the amount of files and your internet connection speed.")?>
                            </p>
                        </div>
                        <div id="uploadAssetTable" class="resultsTable">
                            <table id="rowclick" class="rowclick">
                                <tbody id="file_list"></tbody>
                            </table>
                        </div>
                    </div>
                    <div id="progressBarContainer" class="progressBarContainerClassBG">
                        <div id="progressBar" class="progressBarContainerClass"></div>
                    </div>
                    <div id="percent_done_label" class="uploadProgressPercentDone" style="display: none"></div>
                    <div id="pauseUploadBtn" class="roundedButtonsWrap">
                    <button id="pauseUpload" class="btn btn-default">
                        <?=$this->translate('Pause Upload')?>
                    </button>
                    </div>
                    <p class="actionCompleteLarge" style="display: none;"><?=$this->translate->_("Upload Complete!")?><br/>
                    <span class="textReset">
                        <a href="/index/viewexareleases?filterType=submitted,in_progress,error_correction,rejected&productType=1,2,3,5"><?=$this->translate->_("Click here")?></a>
                        <?=$this->translate->_("to check and submit your releases")?>.
                    </span>
                    </p>
                </div>
            </div>
            <div id="javaapplet">
                <applet code="com.elementit.JavaPowUpload.Manager" archive="/scripts/javapowupload2.2.5/lib/JavaPowUpload.jar,
                                                                            /scripts/javapowupload2.2.5/lib/skinlf.jar,
                                                                            /scripts/javapowupload2.2.5/lib/commons-httpclient.jar,
                                                                            /scripts/javapowupload2.2.5/lib/commons-compress.jar,
                                                                            /scripts/javapowupload2.2.5/lib/commons-net-ftp.jar" width="1" height="1" name="JavaPowUpload" id="JavaPowUpload" mayscript="true" alt="JavaPowUpload by www.element-it.com" VIEWASTEXT>
                    <param name="Common.SerialNumber" value="00726622474120266626282615154265922271110194">
                    <param name="progressbar" value="false">
                    <param name="boxmessage" value="Loading JavaPowUpload Applet ...">
                    <!--Enable upload mode -->
                    <param name="Common.UploadMode" value="true">
                    <!--Enable JavaPowUpload events and functions to use in JavaScript -->
                    <param name="Common.UseLiveConnect" value="true">
                    <!--Hide user interface -->
                    <param name="Common.RunHidden" value="true">
                    <!--Set url to file processing script -->
                    <param name="Upload.UploadUrl" value="<?=$this->bulk_upload_url?>">
                    <param name="Upload.FileFilter.SelectionMode" value="DIRS">
                    <param name="Upload.FileFilter.IncludeSubDirectories" value="false">
                    <param name="Upload.ProgressArea.StatusMessage.Uploading" value="Upload Progress: #TOTALPERCENT#% (#FILESNUM#). Current File: #CURFILEPERCENT#% (#RATEVALUE#/sec, time left: #LEFTHOUR#:#LEFTMIN#:#LEFTSEC#)">
                    <param name="Upload.HttpUpload.ConnectionTimeOut" value="60000">
                    <param name="Upload.HttpUpload.ChunkedUpload.Enabled" value="true">
                    <param name="Upload.HttpUpload.ChunkedUpload.ChunkSize" value="3145728">
                    <param name="Upload.HttpUpload.ChunkedUpload.MaxChunkSize" value="4194304">
                    <param name="Upload.HttpUpload.ExpectContinueHeader" value="false">
                    <param name="Upload.FileFilter.MaxFileCount" value="10000">
                    <param name="Upload.FileFilter.MaxFileSize" value="943718400">
                    <param name="Upload.FileFilter.Description" value="Allowed file count: #MAXFILECOUNT# ">
                    <param name="Common.RetryWhenConnectionLost" value="true">
                    <param name="Common.RetryWhenConnectionLost.CheckInterval" value="5">
                    <param name="Common.RetryWhenConnectionLost.CheckTimeout" value="600">
                    <!-- This text will be shown if applet not working or Java not installed-->
                    <!--    <param name="Upload.FileFilter.Types" value="wav,m4a,tif,jpg,jpeg,tiff">-->
                    <span style="border: 1px solid #FF0000; display: block; padding: 5px; margin-top: 10px; margin-bottom: 10px; text-align: left; background: #FDF2F2; color: #000;">
                        <?=$this->translate->_("Please make sure your browser has")?>
                        <b><?=$this->translate->_("applets enabled")?></b>. <?=$this->translate->_("Also make sure you have")?> <b>Java</b> (JRE) version &gt;= 1.5.<br />
                        <?=$this->translate->_("If applet is not displaying properly, please check")?> <a target="_blank"href="http://java.com/en/download/help/testvm.xml" title="Check Java applets"><?=$this->translate->_("additional configurations")?></a></span>
                </applet>
            </div>
        </div>
        <?php
        } ?>
    <?php } ?>
</div><!-- END PANEL -->
    <!--End Assets-->
</div>
<!-- End Content-->

<!-- START Disable all the JS if BulkUploader is disabled to prevent Java applet loading -->
<?php if (!$this->disableBulkUploader) { ?>
    <script type="text/javascript">
        $(function() {
            // setup ul.tabs to work as tabs for each div directly under div.panes
            $("ul.tabs").tabs("div.panes > div");
            $("#uploadMetadataResults").hide();
            $("#uploadMetadataErrors").hide();
        });
        $(document).ready(function() {
            <?php
            if (!$this->deprecateJavaUploaderEnabled) { ?>
                $("#javatab").click(javatab);
            <?php
            }
            ?>
            $("#htmltab").click(htmltab);
            <?php
            if (!isset($this->chromeEnabled) || !$this->chromeEnabled) {
                ?>
                $("#assetUploadBtn").addClass('disabled');
                $("#import_assets_button").addClass('inactive');
                $("input#assets").attr('disabled', 'disabled');
                <?php
                if (!$this->deprecateJavaUploaderEnabled) { ?>
                    javatab();
                <?php
                } ?>
            <?php
            }
            ?>
            $("#doc_path-label").hide();
            $("#spreadsheet_upload_iframe").load(function(){
                uploadSpreadsheetResponse();
            });
        });
        function htmltab(){
            hideMask();
            $("#html5UploadAssets").show();
            <?php if (!$this->deprecateJavaUploaderEnabled) { ?>
                $("#javaUploadAssets").hide();
                $('#javatab').addClass('inactive');
            <?php } ?>
            $('#htmltab').removeClass('inactive');
        }
        function javatab(){
            var description = "<p>If you're having trouble with Java, try using <a href='#htmltab' onclick='htmltab()'>the HTML5 uploader</a> in Chrome.</p>"
            //Fix for Internet Explorer
            if(JavaPowUpload == undefined){
                showMask($("#switchtabs"),"Please Wait...", description);
                InitJavaObj();
            }
            $("#html5UploadAssets").hide();
            $("#javaUploadAssets").show();
            $('#htmltab').addClass('inactive');
            $('#javatab').removeClass('inactive');
        }
        //to prevent user from navigating away during metadata and assets upload
        $(window).bind('beforeunload', function() {
            if (confirm_navigate_away)
                return "<?=$this->escapejs($this->translate->_("File upload is in Progress. If you click OK all the information will be lost"))?>.";

        } );
        var spreadsheet_error = "";
        var error_releases = new Object();
        var updated_releases = null;
        var uploaded_releases = null;
        var filename = "";
        var num_of_updated_releases = 0;
        var num_of_error_releases = 0;
        var uploading_spreadsheet = 0;

        // flag to protect against navigating away from the page
        var confirm_navigate_away = false;
        var isProjectModeEnabled = '<?=$this->isProjectModeEnabled?>';

        var error_while_uploading = false;

        //BEGIN SPREADSHEET FUNCTIONS
        function moveSpreadsheetUploadBtn(){
            $("#spreadsheetupload").show();
            var spreadsheet_button_width = $("#import_a_spreadsheet_button").width();
            var spreadsheet_button_left = $("#import_a_spreadsheet_button").position().left-40;
            var spreadsheet_button_top = $("#import_a_spreadsheet_button").position().top-12;
            var spreadsheet_button_center = spreadsheet_button_left+(spreadsheet_button_width/2);

            var move_left = spreadsheet_button_center - 90;
            $("#spreadsheetupload").css({left: move_left+"px", top: spreadsheet_button_top+"px", position: "absolute", cursor: "hand"});
            $("#spreadsheetupload").css({"opacity":0, "filter": "alpha(opacity=0)"});
            $("#spreadsheetupload").val("");
        }
        function moveAssetUploadBtn(){
            <?php
            if ($this->chromeEnabled) { ?>
                $("#assets").show();
                var button_width = $("#import_assets_button").width();
                var button_left = $("#import_assets_button").position().left-10;
                var button_top = $("#import_assets_button").position().top-12;
                var move_left = button_left+(button_width/2)-115;
                $("#assets").css({left: move_left+"px", top: button_top+"px", position: "absolute", cursor: "hand"});
                $("#assets").css({"opacity":0, "filter": "alpha(opacity=0)"});
                $("#assets").val("");
            <?php
            }
            ?>
        }
        function showMask(target, msg, description){
            if(description === undefined) description = "";
            $('#loading_image').css('top', ( ($(window).height() - $('#loading_image').height() ) / 2) + $(window).scrollTop() + 'px');
            $('#loading_image').css('left', ( ($(window).width() - $('#loading_image').width() ) / 2) + $(window).scrollLeft() + 'px');
            $("#loading_image").html('<b>'+msg+'</b><br><img src="<? echo $loadingImagePath ?>" />');
            $("#loading_image").append(description).show();
            $(target).mask({ closeOnEsc: false, closeOnClick: false, color:"#222222", opacity:0.2 });
            $("#loading_image").expose();
            $("#loading_image").css("z-index",9999);
        }
        function hideMask(){
            $.mask.close();
            $("#loading_image").hide();
        }
        //Submit spreadsheet through uploadexcel form method
        function submitSpreadsheet(){
            $("#uploadMetadataErrors").hide();
            $('#pleaseFixSpreadsheet').show();
            showMask(document,"Uploading Spreadsheet...");
            if($("#spreadsheetupload").val()!= ""){
                spreadsheet_upload_form.appendChild(CSRFP._getInputElt());
                $('#spreadsheet_upload_form').submit();
                $("#spreadsheetupload").val("");
                uploading_spreadsheet = 1;
            }
        }
        //Upon successful spreadsheet upload, check spreadhseet and validate data
        function uploadSpreadsheetResponse(){
            var csrfpTokenObj = CSRFP._getInputElt();
            var bulkuploadFormobj = document.getElementById('spreadsheet_upload_form');
            bulkuploadFormobj.appendChild(csrfpTokenObj);
            if(uploading_spreadsheet == 1){
                $("#spreadsheetupload").val("");
                $("#error_releases").html("");
                var data = eval("("+$('iframe#spreadsheet_upload_iframe').contents().find("#json_text").html()+")");
                if(data && data != null && data != "" && data != undefined){
                        confirm_navigate_away = true;
                        showMask(document,"<?=$this->escapejs($this->translate->_("Uploading Spreadsheet..."))?>");
                        error_releases = null;
                        updated_releases = null;
                        uploaded_releases = null;

                        filename = data.file.filename;
                        $(".old_filename").html(data.file.old_filename);
                        if(data.error != undefined && data.error != "" && data.error != null){
                            var error_str = "";
                            var num_of_errors = 0;
                            for(var each_error in data.error){
                                error_str += data.error[each_error]+"\n";
                                num_of_errors++;
                            }
                            $("#error_number").html(" <?=$this->escapejs($this->translate->_("has"))?> "+num_of_errors+" <?=$this->escapejs($this->translate->_("errors"))?>.");
                            hideMask();
                            $("#error_releases").append('<tr><td>'+error_str+'</td></tr>');
                            $("#updated_releases_table,#updated_releases_table").hide();
                            $("#uploadMetadataErrors").show();
                            confirm_navigate_away = false;
                        }else{
                            validateMetadata(data.file.filename);
                        }
                        uploading_spreadsheet = 0;
                }else{
                    alert("<?=$this->escapejs($this->translate->_('Sorry, an error occurred'))?> ");
                    hideMask();
                    confirm_navigate_away = false;
                    uploading_spreadsheet = 0;
                }
            }
        }
        function generateErrorReleasesPanel(){
            $("#error_releases tr").remove();
            var error_count = 0;
            var normal_errors = new Array();

            for(var folder_name_version in error_releases){
                if(error_releases['type']){
                    normal_errors.push('<tr><td>'+error_releases['error_message_array']+' '+error_releases['message']+'</td></tr>');
                    error_count++;
                    break;
                }
                var folder_name_version_arr = folder_name_version.split("_____");
                var release_name = error_releases[folder_name_version]['data']['release_name'] ? error_releases[folder_name_version]['data']['release_name'] : "[Release Name Not Available]";
                var artist_name = error_releases[folder_name_version]['data']['artist_name'] ? error_releases[folder_name_version]['data']['artist_name'] : "[Artist Name Not Available]";
                if(!error_releases[folder_name_version][0]){
                    normal_errors.push('<tr>\
                            <td><strong>'+artist_name+'</strong> - \
                            <strong>'+release_name+' ('+error_releases[folder_name_version]['data']['vendor_catalog_number']+')</strong></td>\
                    </tr>');
                }
                for(var error_index in error_releases[folder_name_version]){
                    var tmp_index = error_index.split("_");
                    //Errors on a specific row
                    if(error_index.indexOf("miscellaneous") == -1 && error_index.indexOf("data") == -1){
                        for(var column_name in error_releases[folder_name_version][error_index]){
                            normal_errors.push('<tr>\
                                    <td>Row '+tmp_index[2]+':  '+error_releases[folder_name_version][error_index][column_name]+'</td>\
                                    </tr>');
                            error_count++;
                        }
                    //Errors on the whole release
                    }else{
                        if(error_index != "data"){
                            var line_numbers = new Array();
                            for(var i in error_releases[folder_name_version]['data']['line_numbers']){
                                line_numbers.push(error_releases[folder_name_version]['data']['line_numbers'][i]);
                            }
                            normal_errors.push('<tr>\
                                    <td>Row '+line_numbers.join(',')+': '+error_releases[folder_name_version][error_index]["all_columns"]+'</td>\
                                    </tr>');
                            error_count++;
                        }
                    }
                }
            }
            for(var i in normal_errors){
                $("#error_releases").append(normal_errors[i]);
            }
            if(spreadsheet_error != ""){
                if(spreadsheet_error.upload_error){
                    $("#error_releases").append('<tr><td> '+spreadsheet_error.upload_error+'</td></tr>');
                    error_count++;
                }else{
                    for(var i in spreadsheet_error){
                        var error_line_numbers = spreadsheet_error[i]["line_numbers"].join(",");
                        $("#error_releases").append('<tr><td>Row '+error_line_numbers+': '+spreadsheet_error[i]["message"]+'</td></tr>');
                        error_count++;
                    }
                }
                spreadsheet_error = "";
            }

            $("#error_number").html(" has "+error_count+" errors.");
            $(".missing").html("Errors ("+error_count+") - Error Releases ("+num_of_error_releases+")");
        }
        function populateUpdatedReleasesTable(){
            $("#updated_releases_table").show();
            if(uploaded_releases.length == 0 && updated_releases.length == 0){
                $("#update_releases_table_tbody").append('<tr><td colspan="5"><?=$this->escapejs($this->translate->_("Spreadsheet is Empty"))?>.</td></tr>');
            }else{
                $("#update_releases_table_tbody").html("");
                //populate updated releases
                var url = "/releasebuilder/view?release_id=";
                function htmlspecialchars(str) {
                    return str.replace(/&/g, '&amp;')
                            .replace(/</g, '&lt;')
                            .replace(/>/g, '&gt;')
                            .replace(/"/g, '&quot;')
                            .replace(/'/g, '&#039;');
                }
                for(var folder_name_version in updated_releases){
                    var folder_name_version_arr = folder_name_version.split("_____");
                    var project_id = updated_releases[folder_name_version]['project_id'];
                    var release_id = updated_releases[folder_name_version]['release_id'];
                    if (isProjectModeEnabled) {
                        url =  '/project/' + project_id + '/product/' + release_id + '/overview';
                        release_id = '';
                    }
                    var version = folder_name_version_arr[1];
                    $("#update_releases_table_tbody").append('<tr><td onclick="onRowClick(\''+url+release_id+'\')"><a href="'+url+release_id+'">'+htmlspecialchars(updated_releases[folder_name_version]['Release Name'])+'</a></td><td onclick="onRowClick(\''+url+release_id+'\')">'+htmlspecialchars(updated_releases[folder_name_version]['Artist Name'])+'<br>'+(version ? "("+version+")" : "")+'</td><td onclick="onRowClick(\''+url+release_id+'\')">'+updated_releases[folder_name_version]['Release Date']+'</td><td onclick="onRowClick(\''+url+release_id+'\')">'+folder_name_version_arr[0]+'</td><td onclick="onRowClick(\''+url+release_id+'\')">'+version+'</td></tr>');
                }
                //populate newly created releases
                for(var folder_name_version in uploaded_releases){
                    var folder_name_version_arr = folder_name_version.split("_____");
                    var project_id = uploaded_releases[folder_name_version]['project_id'];
                    var release_id = uploaded_releases[folder_name_version]['release_id'];
                    if (isProjectModeEnabled) {
                        url =  '/project/' + project_id + '/product/' + release_id + '/overview';
                        release_id = '';
                    }
                    var version = folder_name_version_arr[1];
                    $("#update_releases_table_tbody").append('<tr><td onclick="onRowClick(\''+url+release_id+'\')"><a href="'+url+release_id+'">'+htmlspecialchars(uploaded_releases[folder_name_version]['Release Name'])+'</a></td><td onclick="onRowClick(\''+url+release_id+'\')">'+htmlspecialchars(uploaded_releases[folder_name_version]['Artist Name'])+'<br>'+(version ? "("+version+")" : "")+'</td><td onclick="onRowClick(\''+url+release_id+'\')">'+uploaded_releases[folder_name_version]['Release Date']+'</td><td>'+folder_name_version_arr[0]+'</td><td onclick="onRowClick(\''+url+release_id+'\')">'+version+'</td></tr>');
                }

            }
            $("#import_a_spreadsheet_button").html("Upload Your Spreadsheet");
            confirm_navigate_away = false;
        }
        function validateMetadata(filename){
            updated_releases = null;
            uploaded_releases = null;
            num_of_updated_releases = 0;
            num_of_error_releases = 0;
            $("#uploadMetadataResults,#updated_releases_table").hide();
            $("#uploadMetadataErrors").hide();
            var d = new Date();
            $.ajax({
                type: 'POST',
                url: '/multiplereleases/savebulkmetadata?key='+d.getTime()+'&filename='+filename,
                data: {format: "json"},
                dataType: "json",
                success: function(data2, textStatus, XMLHttpRequest){
                    if(data2 != null){
                        error_releases = data2.release_error;
                        updated_releases = data2.updated_releases;
                        num_of_updated_releases = data2.num_of_updated_releases;
                        num_of_error_releases = data2.num_of_error_releases;
                        num_of_good_releases = data2.num_of_good_releases;
                        generateErrorReleasesPanel();
                        if(num_of_error_releases == 0){
                            if(num_of_good_releases == 0 && num_of_updated_releases == 0){
                                $(".uploadMetadataErrorsTab span").html("<?=$this->escapejs($this->translate->_("Errors"))?> (1)");
                                $("#uploadMetadataResults").hide();
                                $("#uploadMetadataErrors").show();
                                $("#import_a_spreadsheet_button").html("<?=$this->escapejs($this->translate->_("Upload Your Spreadsheet"))?>");
                                hideMask();
                                $("#error_releases").append('<tr><td><?=$this->escapejs($this->translate->_("Spreadsheet is Empty"))?>.</td></tr>');
                            }else{
                                $("#uploadMetadataResults").show();
                                $("#uploadMetadataErrors").hide();
                                uploaded_releases = data2.new_releases;
                                updated_releases = data2.updated_releases;
                                populateUpdatedReleasesTable();
                                $('.table-sorter').trigger('update');
                                hideMask();
                            }
                        }else{
                            $("#uploadMetadataResults").hide();
                            $("#uploadMetadataErrors").show();
                            $("#import_a_spreadsheet_button").html("<?=$this->escapejs($this->translate->_("Upload Your Spreadsheet"))?>");
                            hideMask();
                        }
                    }else{
                        $("#uploadMetadataResults").hide();
                        $("#uploadMetadataErrors").show();
                        $("#import_a_spreadsheet_button").html("<?=$this->escapejs($this->translate->_("Upload Your Spreadsheet"))?>");
                        hideMask();
                        $("#error_releases").append('<tr><td><?=$this->escapejs($this->translate->_("Your spreadsheet does not seem to match our template. Please download the latest version"))?> <a href="/<?=$fileVersion?>"><?=$this->escapejs($this->translate->_("here"))?></a>.</td></tr>');
                    }
                    confirm_navigate_away = false;
                },
                error: function(xhr, textStatus, errorThrown){
                    if(xhr.responseText && xhr.responseText != "" && xhr.responseText != null && xhr.responseText != undefined){
                        var error_obj = eval("("+xhr.responseText+")");
                        spreadsheet_error = error_obj.file_error;
                    }
                    generateErrorReleasesPanel();
                    if(!xhr.responseText || xhr.responseText == "" || xhr.responseText == null || xhr.responseText == undefined){
                        $("#error_releases").append('<tr><td><?=$this->escapejs($this->translate->_("Your spreadsheet does not seem to match our template. Please download the latest version"))?> <a href="/<?=$fileVersion?>"><?=$this->escapejs($this->translate->_("here"))?></a>.</td></tr>');
                    }
                    $("#error_number").html(" has 1 error.");
                    $("#uploadMetadataResults").hide();
                    $("#uploadMetadataErrors").show();
                    $("#import_a_spreadsheet_button").html("<?=$this->escapejs($this->translate->_("Upload Your Spreadsheet"))?>");
                    hideMask();
                    confirm_navigate_away = false;
                }
            });
        }

        //BEGIN ASSET UPLOAD FUNCTIONS
        //GLOBAL VARIABLE TO HOLD FILES
        var uploadedFiles = new Resumable({
          target:'<?=$this->html5_bulk_upload_url?>',
          chunkSize: 3145728,
          forceChunkSize: true,
          testChunks:false
        });
        $(function(){
            uploadedFiles.assignBrowse(document.getElementById('assets'), true);
            document.getElementById('assets').addEventListener('change', submitAssets, false);
            var pause = document.getElementById('html5PauseUpload');
            pause.addEventListener('click', stopHtml5Upload, false);
        });
        function submitAssets(){
            showMask(document, "Validating Assets");
            var fileList = uploadedFiles.files;
            var j = "";
            $("#import_success_msg").hide();
            $('#html5UploadArtAudioBulk').show();
            $('#html5UploadAssetErrors').hide();
            $('#assetErrorsFooterBorder').hide();
            $('#html5UploadAssetContainer').show();
            $('#html5UploadAssetTable').show();
            $('#html5FilesMatched').hide();
            $('#html5ErrorValidationFailed').hide();
            for(f=0;f<fileList.length;f++){
                if(isValidFile(fileList[f].file)) {
                    var folderBySlashes = fileList[f].file.webkitRelativePath.split("/");
                    var folder = folderBySlashes[folderBySlashes.length-2];
                    j += '{ '
                        + '"filename" : '
                        + '"' + fileList[f].file.name + '"'
                        + ", "
                        + '"folder" : '
                        + '"' + folder + '"'
                        + ", "
                        + '"id" : '
                        + '"'+ folder + '|' + fileList[f].file.name +'"'
                        + ' },';
                }else{
                    uploadedFiles.removeFile(fileList[f]);
                }
            }
            startHtml5Upload(j);
        }
        function startHtml5Upload(j){
            confirm_navigate_away = true;
            j = j.replace(/\,$/,"");
            j = '['+j+']';
            if (j != '[]') {
                saveHtml5FileData(j);
            }
            if($("#html5_file_list:has(tr)").length > 0){
                $('#html5UploadAssetContainer').show();
                $('#assetErrorsFooterBorder').show();
                $('#html5FilesMatched').show();
                $("#html5PauseUpload").removeClass('disabled');
                $("#html5PauseUploadBtn").show();
            }else{
                $('#html5UploadAssetContainer').hide();
                $('#html5ProgressBarContainer').hide();
                $("#html5PauseUpload").addClass('disabled');
            }
        }
        function saveHtml5FileData(bulk_upload){
            $.ajax({
                type: 'POST',
                async: false,
                url: '/multiplereleases/getdestinationlist',
                data: {bulk_upload:bulk_upload,format:"json"},
                dataType: "json",
                timeout: 360 * 1000,
                success: function( objResponse, textStatus, XMLHttpRequest ){
                    doHtml5Upload(objResponse);
                },
                error: function( xhr, textStatus, errorThrown ){
                    $('#html5ErrorValidationFailed').show();
                    $('#html5FilesMatched').hide();
                    $('#html5UploadAssetContainer').hide();
                    $('#html5ProgressBarContainer').hide();
                    $("#html5PauseUpload").addClass('disabled');
                    $("#html5PauseUpload").hide();
                    $("#html5_file_list").html("");
                }
            });
        }
        function doHtml5Upload(response) {
            hideMask();
            $('#assetErrorsFooterBorder').hide();
            $("#html5ProgressBarContainer,#html5ProgressBar,#html5_percent_done_label").show();
            $("#html5_error_asset_list").html("");
            var fileList = uploadedFiles.files;
            var errors_array = new Array();
            var valFile = "";
            var invalidFiles = new Array();
            //Cross-reference files with validation info to check for invalid files
            $.each(fileList, function(k,v){
                var folderBySlashes = fileList[k].file.webkitRelativePath.split("/");
                var folderWithSlashes = folderBySlashes[folderBySlashes.length-2] + "/" + folderBySlashes[folderBySlashes.length-1];
                valFile = response[folderBySlashes[folderBySlashes.length-2]+"|"+fileList[k].file.fileName];
                if (valFile.upload_filename == 'duplicate_image' || valFile.upload_filename == 'meta_not_found' || valFile.upload_filename == 'out_of_label_processing' || valFile.upload_filename == 'invalid_file_type') {
                    errors_array[valFile.id+"|"+folderWithSlashes] = valFile.upload_filename;
                    invalidFiles.push(fileList[k]);
                }else{
                    setDescription(valFile, k);
                    //Create table of valid files with progress bars
                    var size_in_mb = convertmb(fileList[k].file.size);
                    $("#html5_file_list").append('<tr id="html5_row_'+hex_md5(folderWithSlashes)+'" class="selected"> \
                                            <td>'+folderWithSlashes+'  ('+size_in_mb+'MB)</td><td id="html5_file_status_'+hex_md5(folderWithSlashes)+'" width="180px"></td> \
                                            </tr>');
                    createHtml5ProgressBar(folderWithSlashes);
                }
            });
            removeInvalidFiles(invalidFiles);
            populateHtml5AssetErrors(errors_array);
            uploadedFiles.upload();
            uploadedFiles.on('fileProgress', updateHtml5Progress);
            uploadedFiles.on('complete', finishHtml5Upload);
            uploadedFiles.on('fileError', errorHtml5Upload);
        }
        function createHtml5ProgressBar(filePath){
            $("#html5_file_status_" + hex_md5(filePath)).html('<div id="html5CurrentProgressBarContainer" class="progressBarContainerClassBGTrack">\
                    <div id="html5CurrentRowProgress" class="progressBarContainerClass"></div>\
                     </div>');
        }
        function updateHtml5Progress(file) {
            if(uploadedFiles.isUploading() || file.progress() > 0){
                var folderBySlashes = file.relativePath.split("/");
                var folder = folderBySlashes[folderBySlashes.length-2] + "/" + folderBySlashes[folderBySlashes.length-1];
                var currentPercentLoaded = Math.round(file.progress() * 100);
                var fileNum = getKeyByValue(uploadedFiles.files, file.uniqueIdentifier);
                if (currentPercentLoaded >= 1 && currentPercentLoaded < 100) {
                    $("#html5_file_status_" + hex_md5(folder) + " :first-child :first-child").css("width", currentPercentLoaded+"%");
                }else if(currentPercentLoaded < 1){
                    $("#html5_file_status_" + hex_md5(folder) + " :first-child :first-child").css("width", 1);
                }else{
                    $("#html5_file_status_" + hex_md5(folder)).html("");
                    $("#html5_file_status_"+hex_md5(folder)).append('<span class="yes"><?=$this->escapejs($this->translate->_("complete"))?></span>');
                    $('#chk_'+hex_md5(folder)).hide();
                    $('#html5_row_'+hex_md5(folder)).removeClass('selected');
                }
                percentDone = Math.round(uploadedFiles.progress(true) * 100);
                if(percentDone>=1 && percentDone<100){
                    $("#html5ProgressBar").css("width", percentDone + "%");
                }else if(percentDone<1){
                    $("#html5ProgressBar").css("width", "1px");//0% width not shown correctly by some browsers
                }
                $("#html5_percent_done_label").html("<?=$this->escapejs($this->translate->_("Upload Progress"))?> "+percentDone+"% ("+fileNum+"/"+uploadedFiles.files.length+"). "+"<?=$this->escapejs($this->translate->_("Current File"))?>"+": "+currentPercentLoaded+"%");
            }
        }
        function errorHtml5Upload(file, message) {
            var folderBySlashes = file.relativePath.split('/');
            var folder = folderBySlashes[folderBySlashes.length-2] + '/' + folderBySlashes[folderBySlashes.length-1];
            $('#html5_file_status_' + hex_md5(folder)).html('');
            $('#html5_file_status_' + hex_md5(folder)).append('<span class="errored"><?=$this->escapejs($this->translate->_('error'))?></span>');
            error_while_uploading = true;
        }
        function finishHtml5Upload(){
            $("#html5ProgressBarContainer").hide();
            $(".roundedButtonsWrap").css('display','none');
            if (error_while_uploading) {
                $("#html5_upload_error").css('display','block');
            } else {
                $(".actionCompleteLarge").css('display','block');
            }
            confirm_navigate_away = false;
        }
        function stopHtml5Upload(){
            if(!uploadedFiles.isUploading()){
                uploadedFiles.upload();
                $('#html5PauseUploadTxt').html("<?=$this->translate->_("Pause Upload")?>");
            }else{
                uploadedFiles.pause();
                $('#html5PauseUploadTxt').html("<?=$this->translate->_("Resume Upload")?>");
                confirm_navigate_away = false;
            }
        }
        function populateHtml5AssetErrors(errors_array){
            if(Object.keys(errors_array).length > 0){
                $('#html5UploadAssetErrors').hide();
                for(var x in errors_array){
                    var file_info = x.split("|");
                    var file_path = file_info[0] + "/" + file_info[1];
                    $("#html5_error_asset_list").append('<tr class="selected"> \
                            <td>'+file_path+'</td><td width="180px"><span class="errored">'+errors_array[x]+'</span></td> \
                            </tr>');
                    $('#html5UploadAssetErrors').show();
                    $('#html5_row_'+hex_md5(file_path)).remove();
                }
                confirm_navigate_away = false;
            }
        }
        function setDescription(valFile, fileIndex){
            var asset_code_string = "";
            for (var asset_code_id in valFile.audio_asset_code){
                asset_code_string += valFile.audio_asset_code[asset_code_id] + "&";
            }
            asset_code_string = asset_code_string.replace(/\&$/,"");
            var description = valFile.upload_filename+"|"+valFile.upc+"|"+valFile.vendor_id+"|"+valFile.vendor_contact_id+"|"+asset_code_string;
            valFile.description = description;
            if(uploadedFiles.files[fileIndex] !== undefined) uploadedFiles.files[fileIndex].description = description;
        }
        function convertmb(f) {
            var mb=Math.round(f/1024/1024*100000)/100000;
            var resultMb = Math.round(mb*Math.pow(10,2))/Math.pow(10,2);
            return resultMb;
        }
        function getKeyByValue(files,value) {
            for(var f in files) {
                if(files[f].uniqueIdentifier === value)
                    return parseInt(f)+1;
            }
            return 0;
        }
        function isValidFile(file){
            var validTypes = ["audio/wav", "image/tiff", "audio/m4a", "image/jpeg", "audio/x-m4a", "audio/mp4", "audio/flac", "audio/x-flac" ];

            if(file.type!="" && file.name.charAt(0)!="." && file.type.match(/^(text)/) === null && $.inArray(file.type, validTypes) > -1){
                return true;
            }else{
                return false;
            }
        }
        function removeInvalidFiles(invalidFiles){
            for(i=0;i<invalidFiles.length;i++){
                uploadedFiles.removeFile(invalidFiles[i]);
            }
        }
    </script>

    <script type="text/javascript">
        // Global variables:
        // Count of how many files have been successfully uploaded
        var uploadedfilescount = 0;

        // Placeholder for JavaPowUpload Java Applet object
        var JavaPowUpload;

        // Object storing information about validation of assets in queue against metadata in the DB. Populate via an AJAX call.
        var validationResult;

        // Timer to check if anymore files are being added into the JavaPowUpload queue.
        // This is a 10 second timer that needs to be used since JavaPowUpload does not have its own onAddAllFiles event.
        var on_add_all_timer;

        // Multidimensional array of JSON objects that need to be sent as a request for asset meta validation.
        // This avoids looping through larger length arrays that eventually timeout javascript.
        var upload_queue_chunks = new Array();

        // Count of number of arrays that upload_queue_chunks is holding.
        var num_of_upload_queue_chunks = 1;

        // JSON response from validation AJAX calls. These responses need to be used across various event based methods.
        var jsonStr = "";

        // Flag determining if user has manually paused an ongoing upload.
        var is_paused = true;

        //Index of the file currently being uploaded
        var current_file_index = 0;


        function InitJavaObj(){
            JavaPowUpload = document.getElementById("JavaPowUpload");
            $("#progressBarContainer,#progressBar,#percent_done_label").hide();
        }

        function JavaPowUpload_onAppletInit(){
            //Fix for Internet Explorer
            if(JavaPowUpload == undefined){
                JavaPowUpload = document.getElementById("JavaPowUpload");
            }
            hideMask();
            $('#uploadArtAudioBulk').hide();
        }

        function browsefiles(){
            JavaPowUpload.browseFiles();
            resetUploadQueueChunks();
            $("#browseAudioBtn").addClass("disabled");
        }

        function resetUploadQueueChunks(){
            upload_queue_chunks = new Array();
            num_of_upload_queue_chunks = 1;
        }

        //Event "onAddFiles" invokes after new file added to list
        function JavaPowUpload_onAddFile(listItem){
            showMask(document, "Validating Assets");
            $("#import_success_msg").hide();
            $('#uploadArtAudioBulk').show();
            $('#uploadAssetErrors').hide();
            $('#uploadAssetContainer').show();
            $('#uploadAssetTable').show();
            $('#filesMatched').hide();
            $('#errorValidationFailed').hide();

            if(listItem.isFile()) {

                    var folderWithSlashes = String(listItem.getPath());
                    var folder = folderWithSlashes.replace(/\134/g,"");
                    jsonStr += '{ '
                        + '"filename" : '
                        + '"' + listItem.getFilename() + '"'
                        + ", "
                        + '"folder" : '
                        + '"' + folder + '"'
                        + ", "
                        + '"id" : '
                        + '"'+ folder + '|' + listItem.getFilename() +'"'
                        + ' },';

            }
            if(num_of_upload_queue_chunks == 100){
                jsonStr = jsonStr.replace(/\,$/,"");
                upload_queue_chunks.push(jsonStr);
                num_of_upload_queue_chunks = 0;
                jsonStr = "";
            }
            num_of_upload_queue_chunks ++;

            var size_in_mb = convertmb(listItem.getLength());
            $("#file_list").append('<tr id="row_'+hex_md5(listItem.getFullPath())+'" class="selected"> \
                                    <td>'+listItem.getFullPath()+'  ('+size_in_mb+'MB)</td><td id="file_status_'+hex_md5(listItem.getFullPath())+'" width="180px"></td> \
                                    </tr>');
            $("#progressBarContainer,#progressBar,#percent_done_label").hide();


            clearTimeout(on_add_all_timer);
            on_add_all_timer = setTimeout("StartUpload()",10000);
        }

        function JavaPowUpload_onFileFinished(listItem) {
            var full_path = listItem.getFullPath();
            $("#file_status_" + hex_md5(full_path)).html("");
            if(listItem.getStatus() == 2){
                $("#file_status_"+hex_md5(full_path)).append('<span class="yes"><?=$this->escapejs($this->translate->_("complete"))?></span>');
                $('#chk_'+hex_md5(full_path)).hide();
                $('#row_'+hex_md5(full_path)).removeClass('selected');
            }else{
                $("#file_status_"+hex_md5(full_path)).append('<span class="errored"><?=$this->escapejs($this->translate->_("audio error"))?></span>');
            }
            $('#row_'+hex_md5(full_path)).unbind("click");
            $('#row_'+hex_md5(full_path)).unbind("mouseover");
            $('#row_'+hex_md5(full_path)).unbind("mouseout");
            uploadedfilescount++;
            var description = listItem.getDescription();
            updateStatus(description);
        }

        function JavaPowUpload_onUploadStopped(listItem) {

        }

        function StartUpload(){
            clearTimeout(on_add_all_timer);
            confirm_navigate_away = true;
            jsonStr = jsonStr.replace(/\,$/,"");
            upload_queue_chunks.push(jsonStr);
            num_of_upload_queue_chunks = 1;
            jsonStr = "";
            var objResponse = "";
            for(i in upload_queue_chunks){
                jsonStr = '['+upload_queue_chunks[i]+']';
                if (jsonStr != '[]') {
                    saveFileData(jsonStr);
                }
            }
            if($("#file_list:has(tr)").length > 0){
                $('#uploadAssetContainer').show();
                $('#filesMatched').show();
                updateProgressBar(0);
                uploadedfilescount = 0;
                $('#browseAudioBtn').addClass("disabled");
                $("#pauseUpload").removeClass('disabled');

                JavaPowUpload.clickDownload();
                is_paused = false;
                $("#pauseUploadBtn").show();
            }else{
                $('#uploadAssetContainer').hide();
                $('#progressBarContainer').hide();
                $("#pauseUpload").addClass('disabled');
                $('#browseAudioBtn').removeClass("disabled");
                resetUploadQueueChunks();
                jsonStr = "";
            }
            hideMask();
        }

        function saveFileData(bulk_upload){
             $.ajax({
                 type: 'POST',
                 async: false,
                 url: '/multiplereleases/getdestinationlist',
                 data: {bulk_upload:bulk_upload,format:"json"},
                 dataType: "json",
                 timeout: 360 * 1000,
                 success: function( objResponse, textStatus, XMLHttpRequest ){
                    jsonStr = "";
                    DoUpload(objResponse);
                 },
                 error: function( xhr, textStatus, errorThrown ){
                    $('#errorValidationFailed').show();
                    $('#filesMatched').hide();
                    $('#uploadAssetContainer').hide();
                    $('#progressBarContainer').hide();
                    $("#pauseUpload").addClass('disabled');
                    $("#pauseUpload").hide();
                    $('#browseAudioBtn').removeClass("disabled");
                    $('#browseAudioBtn').addClass("rounded btn2");
                    resetUploadQueueChunks();
                    JavaPowUpload.clearTree();
                    $("#file_list").html("");
                    jsonStr = "";
                 }
             });
        }

        function updateStatus(description){
            var fileList = validationResult.bulk_upload_response;
            var description_details = String(description).split('|');
            var detail_id = description_details[1];
             $.ajax({
                 type: 'POST',
                 url: '/multiplereleases/updatefileuploadstatus',
                 data: {import_asset_id:detail_id,format:"json"},
                 dataType: "json",
                 success: function( objResponse, textStatus, XMLHttpRequest ){
                 },
                 error: function( xhr, textStatus, errorThrown ){
                 }
             });
        }

        function DoUpload(response) {
            var upload_array;
            var errors_array = new Array();
            $("#progressBarContainer,#progressBar,#percent_done_label").show();
            //$("#file_list").html("");
            //$("#error_asset_list").html("");
            validationResult = response;
            //fileList is the response object from the server
            var fileList = validationResult.bulk_upload_response;
            // create index since response doesn't return index of element in fileList
            var index = 0;
            var errorMsg;
            for(i in fileList){
                var folder_file = i.split("|");
                var uploadFileError = fileList[i].upload_filename;
                if (uploadFileError == 'duplicate_image' || uploadFileError == 'meta_not_found'
                    || uploadFileError == 'out_of_label_processing' || uploadFileError == 'invalid_file_type') {
                    var fileName = folder_file[1],
                        upc = fileList[i].upc;
                    errorMsg = getErrorMessage(uploadFileError, fileName, upc);
                    errors_array[index+"|"+JavaPowUpload.getFiles().get(index).getFullPath()] = errorMsg;
                }else {
                    var asset_code_string = "";
                    for (var asset_code_id in fileList[i].audio_asset_code){
                        asset_code_string += fileList[i].audio_asset_code[asset_code_id] + "&";
                    }
                    asset_code_string = asset_code_string.replace(/\&$/,"");
                    var description = fileList[i].upload_filename+"|"+fileList[i].import_asset_id+"|"+fileList[i].vendor_id+"|"+fileList[i].token+"|"+asset_code_string;
                    var filePath = '\\'+folder_file[0]+'\\'+folder_file[1];
                    setJavaPowUploadDescription(filePath,description);
                }
                index++;
            }
            populateAssetErrors(errors_array);
        }

        // Function to get readable error messages based on type of message
        function getErrorMessage(uploadFileError, fileName, upc){
            var errorMsgMapper = {
                'meta_not_found' : 'The audio file '+ fileName +' failed as there was no corresponding metadata found in our database',
                'invalid_file_type': 'The file type for '+ fileName + ' is not supported. We only support .wav, .m4a, jpg, and .tif',
                'out_of_label_processing' : 'The artwork for UPC '+ upc + ' failed because this release has already been approved by The Orchard'
            };
            return errorMsgMapper[uploadFileError];
        }

        function setJavaPowUploadDescription(filePath,description){
            var list = JavaPowUpload.getFiles();
            for(i=list.size()-1;i>=0;i--)
            {
                if(list.get(i).isFile() && list.get(i).getFullPath() == filePath){
                    list.get(i).setDescription(description);
                }
            }

        }

        function populateAssetErrors(errors_array){
            if(Object.size(errors_array) > 0){
                $('#uploadAssetErrors').hide();
                var error_msg;
                var queue_index;
                for(i in errors_array){
                    var file_info = i.split("|");
                    // Removed code to get queue_index as it is the first element in errors_array element
                    queue_index = file_info[0];
                    myFileName = JavaPowUpload.getFiles().get(queue_index).getFileName();
                    var ext = myFileName.split('.').pop().toLowerCase();
                    if(myFileName.indexOf(".") != 0){
                        if(ext != "db"){
                            $("#error_asset_list").append('<tr class="selected"> \
                                    <td>'+file_info[1]+'</td><td width="280"><span class="errored">'+errors_array[i]+'</span></td> \
                                    </tr>');
                            $('#uploadAssetErrors').show();
                        }
                        $('#row_'+hex_md5(file_info[1])).remove();
                    }
                    try{
                        // Remove invalid file
                        JavaPowUpload.removeFile(file_info[1]);
                    }catch (e){
                        continue;
                    }
                }
            }
        }

        function JavaPowUpload_onFileStart(uploadItem){
            $("#file_status_" + hex_md5(uploadItem.getFullPath())).html('<div id="currentProgressBarContainer" class="progressBarContainerClassBGTrack">\
                    <div id="currentRowProgress" class="progressBarContainerClass"></div>\
                     </div>');
        }

        //Event "onFileProgress" invokes periodically during the upload process
        function JavaPowUpload_onFileProgress(listItem){
            current_file_index = listItem.getIndex();
           $("#percent_done_label").html("<?=$this->escapejs($this->translate->_("Current File"))?> "+JavaPowUpload.getProgressInfo().getFormattedStatus());
           //round percent to 2 decimals
           var PercentDone = Math.round(JavaPowUpload.getProgressInfo().getTotalPercent()*100)/100;
           updateCurrentFileProgressBar();
            updateProgressBar(PercentDone);
        }

        //Update HTML progress bar state
        function updateProgressBar(percentDone){
            if(JavaPowUpload.getProgressInfo().getTotalPercent() > 0){
                $("#progressBarContainer").show();
            }
            if(percentDone>=1){
                $("#progressBar").css("width", percentDone + "%");
            }else{
                $("#progressBar").css("width", "1px");//0% width not shown correctly by some browsers
            }
        }

        function updateCurrentFileProgressBar(){
            var currentPercentDone = Math.round(JavaPowUpload.getProgressInfo().getCurrentFilePercent()*100)/100;
            if(currentPercentDone>=1){
                $("#currentRowProgress").css("width", currentPercentDone + "%");
            }else{
                $("#currentRowProgress").css("width", 1);
            }
        }

        function replacer(key, value) {
            if (typeof value === 'number' && !isFinite(value)) {
                return String(value);
            }
            return value;
        }

        function StopUpload(){
            if(is_paused){
                JavaPowUpload.clickDownload();
                $('#browseAudioBtn').addClass("disabled");
                $('#pauseUploadTxt').html("<?=$this->translate->_("Pause Upload")?>");
                is_paused = false;
            }else{
                JavaPowUpload.clickStop();
                $('#browseAudioBtn').removeClass("disabled");
                $('#pauseUploadTxt').html("<?=$this->translate->_("Resume Upload")?>");
                is_paused = true;
            }
        }

        function JavaPowUpload_onUploadFinish()
        {
            if(uploadedfilescount == 0) $("#progressBarContainer").hide();
            var list = JavaPowUpload.getFiles();
            if(list.size() == uploadedfilescount){
                JavaPowUpload.clearTree();
                resetUploadQueueChunks();
                jsonStr = "";
            }
            $('#browseAudioBtn').removeClass("disabled");
            /**
            * possible states: "no_complete", "complete", "complete_nofilesuploaded"
            */
            var upload_status = 'complete_nofilesuploaded';
            if(list.size() > 0){
                for(i=1;i<list.size();i++)  {
                    if(list.get(i).isFile()) {
                        if(list.get(i).getStatus() == 2) {
                            upload_status = 'complete';
                        }
                        // Adding status 4 in condition since getStatus returns 4 when 'Error occured'
                        if(list.get(i).getStatus() == 1 || list.get(i).getStatus() == 3 || list.get(i).getStatus() == 4) {
                            upload_status = 'no_complete';
                            break;
                        }
                    }
                }
            }
            if(upload_status == 'complete' || upload_status == 'complete_nofilesuploaded') {
                confirm_navigate_away = false;
                if(upload_status == 'complete'){
                     complete_buttonsUploadStatus();
                     JavaPowUpload.clearTree();
                }else if(upload_status == 'complete_nofilesuploaded'){
                    complete_noFilesUploaded_buttonsUploadStatus();
                }
            }else{
                is_paused = true;
            }
        }
        function start_buttonsUploadStatus(){
            $(".roundedButtonsWrap").css('display','inline');
            $(".actionCompleteLarge").css('display','none');

        }

        function complete_buttonsUploadStatus(){
            $(".roundedButtonsWrap").css('display','none');
            $(".actionCompleteLarge").css('display','block');
        }

        function complete_noFilesUploaded_buttonsUploadStatus(){
            $(".roundedButtonsWrap").css('display','none');
            $(".actionCompleteLarge").css('display','none');
            $("#percent_done_label").css('display','none');
        }

        function showRefinedMask(target){
            var position = $("#"+target).position();
            var width = $("#"+target).width() + 30;
            var height = $("#"+target).height() + 30;
            var top = position.top + 10;
            var left = position.left;
            $("#page").append("<div class='inprogress_overlay'></div>")
            $("div.inprogress_overlay").css({
                "left" : left,
                "top" : top,
                "background-color" : "#000000",
                "position" : "absolute",
                "width" : width,
                "height" : height,
                "opacity" : 0.2,
                "z-index" : 999,
                "background-image":"url('/images/ajax-loader-large.gif')",
                "background-repeat":"no-repeat",
                "background-position":"center center",
                "-moz-border-radius":"10px",
                "-webkit-border-radius":"10px"
            });
        }

        function hideRefinedMask(){
            $(".inprogress_overlay").remove();
        }

        function onRowClick(url){
            document.location.href = url;
        }

        Object.size = function(obj) {
            var size = 0, key;
            for (key in obj) {
                if (obj.hasOwnProperty(key)) size++;
            }
            return size;
        };
    </script>
<?php } ?>
<!-- END Disable all the JS if BulkUploader is disabled to prevent Java applet loading -->
