﻿var orderInformation = null;
var orderDataObject = null;
var srcExplainTexts;
var outputExplainTexts;
    
document.observe("dom:loaded", initPage);

function showDeleteWarning() {
    $('divDialogContent').setStyle({ top: "160px" });
    window.dialog.setUsingAppendChild($('divConfirmDelete'));
    window.dialog.show();
}

function showValidate() {
    $('divDialogContent').setStyle({ top: "160px" });
    window.dialog.setUsingAppendChild($('divValidation')); 
    window.dialog.show();
}

function hideValidate() {
    window.dialog.hide();
}

function scrollToFormSection(sectionId) {
    $(sectionId).scrollIntoView(true);
}

function buildExpainHashes() {
    srcExplainTexts = new Hash();
    srcExplainTexts.set('srcFTP', '(For example: ftp://myusername:password@www.myftpserver.com/myVideo.flv)');
    srcExplainTexts.set('srcHTTP', '(For example: http://www.mySite.com/myVideo.flv)');
    srcExplainTexts.set('srcS3', '(For example: http://your.bucket.s3.amazonaws.com/video/myVideo.mp4)');
    srcExplainTexts.set('srcUpload', '(click Upload button and select the video file from your computer)');

    outputExplainTexts = new Hash();
    outputExplainTexts.set('outputFTP', '(For example: ftp://myusername:password@www.myftpserver.com/)');
    outputExplainTexts.set('outputS3', '(For example: http://your.bucket.s3.amazonaws.com/video/)');
    outputExplainTexts.set('outputEmail', '(For example: myname@company.com)');
}

function convertSecondsToTimeUpdateChargeM(seconds) {
    var result = convertSecondsToTime(seconds, false);
    var myDate = new Date('1/1/1900 ' + result);
    var checkMin;
    checkMin = 0;
    if (myDate.getSeconds() > 6)
        checkMin = 1;
    $('chargedMinutes').update(myDate.getHours() * 60 + myDate.getMinutes() + checkMin);
    if ($('chargedMinutes').innerText != $('hidChargedMinutes').value) {
        $('hidChargedMinutes').value = myDate.getHours() * 60 + myDate.getMinutes() + checkMin;
        buildOrder();
    }
    return result;
}

function clearSrcInput() {
    $('txtSrc').value = '';
    $('srcAjaxLoader').hide();
    $('verifySrcInput').removeClassName('verifyOk');
    $('verifySrcInput').removeClassName('verifyBad');
}

//function cancelUpload() {
//    swfu.cancelQueue(0, false);

////    $('srcByUpload').show();
////    $('explainSrc').show();
////    $('srcByUploadProcess').hide();
////    $('progBar').setStyle({ width: '0px' });
////    $('currentS').update('0 MB');
////    $('totalS').update('0 MB');
////    $('txtSrc').value = "";
//}

function srcRadioOnClick(e) {
    $('txtSrc').value = "";
    srcId = Event.element(e).id;
    updateExplainText(srcExplainTexts, srcId, $('explainSrc'));
    $('explainSrc').show();
    $('sourceMethod').value = srcId;
    clearSrcInput();
    if (srcId == 'srcUpload') {
        $('srcByInput').hide();
        $('srcByUpload').show();
        //$('SWFUpload_0').setStyle({ height: '23px' });
    } else {
        $('srcByInput').show();
        $('srcByUpload').hide();
        $('srcByUploadComplete').hide();
    }
}

function uploadFile() {
    $('progBar').setStyle({ width: '0px' });
    $('srcByUpload').hide();
    $('explainSrc').hide();
    $('srcByUploadProcess').show();
    //440px is 100%
    //$('progBar').morph('background:#5B8F0A; width:440px;');
}

function updateExplainText(hashObj, rdoId, explainTextContainer) {
    explainTextContainer.update(hashObj.get(rdoId));
}

function outputRadioOnClick(e) {
    outputId = Event.element(e).id;
    $('outputMethod').value = outputId;
    updateExplainText(outputExplainTexts, outputId, $('explainOutput'));
}

function txtSrcOnBlur() {
        var url;
        url = new String($('txtSrc').value);
        url = url.toLowerCase();
        if (url.indexOf("http") != -1 || url.indexOf("ftp") != -1) {
            //show ajax loader icon in process
            $('srcAjaxLoader').show();
            //ajax async call to check and start getting the file...
            getContentDuration($('txtSrc').value);
        }
}

function getContentDuration(url) {
    //Sample: http://verification-academy-video-test.s3.amazonaws.com/module_abv_session4_assertion_languages_libraries.flv
    var RESTurl = '/Orders/GetContentDuration?url=' + url
    var objVideoInfo;
    new Ajax.Request(RESTurl, {
        method: 'post',
        asynchronous: true,
        onSuccess: function(transport) {
            objVideoInfo = transport.responseText.evalJSON();
            durationCheck(objVideoInfo);
        },
        onFailure: function(transport) {
            objVideoInfo = null;
            $('verifySrcInput').addClassName('verifyBad');
            $('srcAjaxLoader').hide();
        }
    });
}

function durationCheck(orderDataObject) {
    var duration;
    duration = convertSecondsToTimeUpdateChargeM(orderDataObject.Duration);
    $('videoLength').value = duration;
    $('srcAjaxLoader').hide();
    if (orderDataObject.Duration != "0")
        {
            $('verifySrcInput').removeClassName('verifyBad');
            $('verifySrcInput').addClassName('verifyOk');
            buildOrder();
        }
    else
        $('verifySrcInput').addClassName('verifyBad');
}

function addValidateFlash() {
    var so = new SWFObject('/en/flash/Validate_Order.swf', 'orderValidation', '146', '100', '8', '#000000');
    so.addParam('quality', 'high');
    so.addParam('wmode', 'transparent');
    so.write('validationSwf');
}

function initPage() {
    addValidateFlash();
    buildExpainHashes();
    LoadUploader();
    $$('.srcRdo').invoke('observe', 'click', srcRadioOnClick);
    $$('.outputRdo').invoke('observe', 'click', outputRadioOnClick);
    $('txtSrc').observe('blur', txtSrcOnBlur)
    hideErrors();
    $('orderList').update("");
    params = window.location.toString().toQueryParams();
    if (params.oid != undefined) {
        $('aboutTheService').hide();
        $('oid').value = params.oid;
        BuildPrevOrders(params.oid);
    } else {
        $('orderItems').hide();
        $('aboutTheService').show();
    }
    durationSpinner = new SpinnerControl($('videoLength'), $('videoLengthUp'), $('videoLengthDown'), { interval: 1, round: 1, min: 0, max: 10799, toValueFormatter: convertTimeToSeconds, toDisplayFormatter: convertSecondsToTimeUpdateChargeM });
}

function BuildPrevOrders(orderId) {
    var RESTurl = '/Orders/GetOrderDetails/' + orderId
    var objOrderInfo;
    new Ajax.Request(RESTurl, {
        method: 'post',
        asynchronous: false,
        onSuccess: function(transport) {
            objOrderInfo = transport.responseText.evalJSON();
        },
        onFailure: function(transport) {
            objOrderInfo = null;
            return;
        }
    });
    var html;
    html = '<h2>Order Items (Videos)</h2>';
    var currentLine;
    currentLine = -1;
    params = window.location.toString().toQueryParams();
    if (params.hid != undefined)
        currentLine = params.hid;
    var grandTotal;
    grandTotal = 0;
    for (i = 0; i < objOrderInfo.length; i++) {
        var langs;
        langs = "";
        var total;
        total = 0;
        for (l = 0; l < objOrderInfo[i].HeaderLines.length; l++) {
            if (objOrderInfo[i].HeaderLines[l].CatalogItem.Type != 2) 
                langs = langs + objOrderInfo[i].HeaderLines[l].Language.Name + ", ";
            total = total + objOrderInfo[i].HeaderLines[l].Total;
        }
        var num;
        num = "num" + (i + 1);
        langs = langs.substring(0, langs.length - 2);
        var editLine;
        var totalLine;
        editLine = '<a href="iphone_order.htm?oid=' + objOrderInfo[i].OrderID + '&hid=' + objOrderInfo[i].ID + '">Edit</a>' +
              '<span>|</span><a href="javascript:deleteOrderLine(\'' + objOrderInfo[i].ID + '\',\'' + objOrderInfo[i].Title + '\');">Delete</a>';
        if (currentLine == objOrderInfo[i].ID) {
            $('txtSrc').value = objOrderInfo[i].sourceURL;
            $('videoTitle').value = objOrderInfo[i].Title;
            $('videoDescription').value = objOrderInfo[i].Description;
            for (l = 0; l < objOrderInfo[i].HeaderLines.length; l++) {
                //check the order item is not iPhone Embed before marking a language
                if (objOrderInfo[i].HeaderLines[l].CatalogItem.Type != 2) {
                    $('lang_' + objOrderInfo[i].HeaderLines[l].Language.Code).checked = true;
                    $('hidLanguages').value = $('hidLanguages').value + objOrderInfo[i].HeaderLines[l].Language.Code + '|';
                }
            }
            for (n = 0; n < objOrderInfo[i].Notifications.length; n++) {
                $('txtOutput').value = objOrderInfo[i].Notifications[n].URL;
                if (objOrderInfo[i].Notifications[n].Type == 0)
                    $('outputEmail').checked = true;
                if (objOrderInfo[i].Notifications[n].Type == 1) {
                    $('outputFTP').checked = true;
                    break;
                }
            }
            $('videoLength').value = convertSecondsToTimeUpdateChargeM(objOrderInfo[i].Duration);
            editLine = 'Updating...';
        }
        grandTotal += total;
        totalLine = new String(total);
        if (totalLine.indexOf('.', 0) > 0)
            totalLine = totalLine.substring(0, totalLine.indexOf('.', 0) + 3);
        html = html + '<div class="orderItem">\r\n' +
              '   <div class="orderItemNum ' + num + '"></div>\r\n' +
              '   <div class="orderItemData">\r\n' +
              '      <div class="orderItemVTitle" title="' + objOrderInfo[i].Title + '"">' + objOrderInfo[i].Title + '</div>\r\n' +
              '      <div class="orderItemVLen">Video Length: <span class="color3737">' + convertSecondsToTime(objOrderInfo[i].Duration, false) + '</span></div>\r\n' +
              '         <div class="orderItemCapLangs">\r\n' +
              '            <div class="capLangsTitle">Selected Languages:</div>\r\n' +
              '            <div class="capLangsVals">' + langs + '</div>\r\n' +
              '            <div class="clear"></div>\r\n' +
              '         </div>\r\n' +
              '</div>\r\n' +
              '<div class="clear"></div>\r\n' +
              '<div class="orderItemFooter">\r\n' +
              '    <span class="actionLinks">' + editLine + '</span>' +
              '    <span class="subTotalValue">$' + totalLine + '</span>\r\n' +
              '    <span class="subTotalTitle">Sub Total:</span>\r\n' +
              '    <span class="clear"></span>\r\n' +
              '</div><br />\r\n';
    }
    var strGrandTotal;
    strGrandTotal = new String(grandTotal);
    if (strGrandTotal.indexOf('.', 0) > 0)
        strGrandTotal = strGrandTotal.substring(0, strGrandTotal.indexOf('.', 0) + 3);
    html = html + '<div class="grandTotalBox">\r\n' +
                    '<span class="grandTValue">$' + strGrandTotal + '</span>\r\n' +
                    '<span class="grandTTitle">Grand Total:</span>\r\n' +
                    '<span class="clear"></span>\r\n' +
                '</div>';
    $('orderItemsData').update(html);
    $('orderItems').show();
}

function deleteOrderLine(hid, title) {
    params = window.location.toString().toQueryParams();
    $('deletedVideoName').update(title);
    $('deleteLink').href = '/Orders/RemoveOrderLine/' + params.oid + '/' + hid + '?camefrom=order';
    $('divDialogContent').setStyle({ top: "160px" });
    window.dialog.setUsingAppendChild($('divConfirmDelete'));
    window.dialog.show();
}

function AddLangauge(obj) {
    onLanguageSelect(obj.id, 'hidLanguages');
    buildOrder();
}

function buildOrder() {
    if ($('chargedMinutes').innerText == "0")
        return;
    if ($('chargedMinutes').innerText == null || $('chargedMinutes').innerText == "NaN") {
        $('chargedMinutes').update("0");
        $('hidChargedMinutes').update("0");
    }
    var RESTurl = '/Orders/CalcTempHeader/iPhone/' + $('hidChargedMinutes').value + '?languages=' + $('hidLanguages').value;
    var objOrderInfo;
    new Ajax.Request(RESTurl, {
        method: 'post',
        asynchronous: true,
        onSuccess: function(transport) {
            objOrderInfo = transport.responseText.evalJSON();
            drawOrder(objOrderInfo);
        },
        onFailure: function(transport) {
            objOrderInfo = null;
        }
    });
}

function drawOrder(objOrderInfo) {
    $('orderList').update("");
    var str = "";
    var myTemplate = new Template('<tr><td>#{GMTDate}</td><td>#{Status}</td></tr>');
    var myTemplate = new Template('<tr><td>#{CatalogItem.Title}</td><td>#{QTY}</td><td align="right">$#{Price}</td><td align="right">$#{Total}</td></tr>');
    objOrderInfo.each(function(item) { str = str + myTemplate.evaluate(item); })
    $('orderList').update(str);
    var total;
    total = 0;
    for (i = 0; i < objOrderInfo.length; i++) {
        total = total + objOrderInfo[i].Total;
    }
    $('totalField').update('$' + addCommas(total.toString()));
}

function postOrderLine() {
    hideErrors();
    showValidate();
    var objVideoInfo;
    new Ajax.Request('/Orders/GetContentDuration?url=' + $('txtSrc').value, {
        method: 'post',
        asynchronous: true,
        onSuccess: function(transport) {
            objVideoInfo = transport.responseText.evalJSON();
            checkForm(objVideoInfo);
        }
    });
}

function checkForm(objVideoInfo) {
    var formOK;
    formOK = true;
    var anchor;
    anchor = "";
    var calcMinutes = new Number($('chargedMinutes').innerText);
    alert(calcMinutes);
    alert(objVideoInfo.CalculatedMinutes);
    if (calcMinutes < objVideoInfo.CalculatedMinutes) {
        $('errOtherVideoLen').update('The Calculated Video Length you entered does not match the value we found (' + objVideoInfo.CalculatedMinutes + ' min.)');
        $('errOtherVideoLen').show();
        formOK = false;
    }
    if ($('txtSrc').value == '') {
        $('errValidVideo').show();
        formOK = false;
        anchor = "vidSource";
    }
    if ($('videoTitle').value == '') {
        $('errTitle').show();
        formOK = false;
        if (anchor == "")
            anchor = "vidDetails";
    }
    if ($('cmbPrimaryLang').value == '') {
        $('errPSpokenLang').show();
        formOK = false;
        if (anchor == "")
            anchor = "vidDetails";
    }
    if ($('chargedMinutes').innerText == '' || $('chargedMinutes').innerText == '0') {
        $('errVideoLen').show();
        formOK = false;
        if (anchor == "")
            anchor = "vidDetails";
    }
    if ($('txtOutput').value == '' && $('outputEmail').checked != true) {
        $('errValidOutput').show();
        formOK = false;
        if (anchor == "")
            anchor = "vidOutput";
    }
    hideValidate();
    if (formOK) {
        document.orderForm.submit();
    } else {
        scrollToFormSection(anchor);
    }
}

function hideErrors() {
    $('errValidVideo').hide();
    $('errTitle').hide();
    $('errPSpokenLang').hide();
    $('errVideoLen').hide();
    $('errOtherVideoLen').hide();
    $('errValidOutput').hide();
    $('errLanguages').hide();
}


    
    
